Spark 1.4 on Yarn的计算资源参数配置同Spark 1.2区别
问题:
Spark 1.4 on Yarn的计算资源参数配置同Spark 1.2有何区别。
解答:
Spark 1.2中:
- 通过spark.cores.max控制总核数,运行时会尽可能满足。
- 通过spark.executor.memory控制单个executor占用总内存。
- 但在1.2中,每个executor固定占10个core,这个是写死的。所以如果申请的executor memory是50G,实际上每个core分到的内存只有50/10G = 5G
Spark 1.4 on Yarn中:
- 通过spark.executor.instances控制executor的数目
- 通过spark.executor.cores控制每个executor占用核数
- 通过spark.executor.memory控制单个executor占用总内存
可见1.4中,不再通过控制总核数来控制计算资源,而是可以精确控制每个executor占用多少核数,相比1.2写死的10个更灵活。
所以1.4中如果spark.executor.cores没有设的话默认就是1了。
那么spark.executor.memory如果设成30G的话,相当于指定每个core要分到30/1 G = 30G的内存,这是很难满足的。
这里如果希望同1.2申请的计算资源相当,建议的配置应该是:
- spark.executor.cores 10
- spark.executor.memory 50G
这样相当于每个executor还是占了50G内存。
然后调整spark.executor.instance来满足计算需求。