Utils.scala getConfiguredLocalDirs()方法:
1.判断是否是YARN模式 conf.getenv("CONTAINER_ID") != null
conf.getenv("LOCAL_DIRS")
2.Executor环境conf.getenv("SPARK_EXECUTOR_DIRS")
3.conf.getenv("SPARK_LOCAL_DIRS")
4.mesos
5.非YARN或者yarn-client模式:
conf.get("spark.local.dir", System.getProperty("java.io.tmpdir"))
太多的os env变量,最后才从spark conf拿
DiskBlockManager 中block存储:
假设spark.local.dir设置为/data1/local,/data2/local,/data3/local
则block存储存储目录如下
|/data1/local/blockmgr-UUID|/data2/local/blockmgr-UUID|/data3/local/blockmgr-UUID|
其中/datax/local/blockmgr-UUID是一个Array,下面有子目录,通过spark.diskStore.subDirectories配制数目,默认为64个
子目录名称为两位数字
block按blockid转文件名存储。
如rdd block:
"rdd_" + rddId + "_" + splitIndex









网友评论