我试图理解在YARN上运行Spark作业时,内核数量和执行器数量之间的关系。
测试环境如下:
网络:1 gb
Spark版本:1.0.0
Hadoop版本:2.4.0 (Hortonworks HDP 2.1)
Spark作业流程:sc.textFile -> filter -> map -> filter -> mapToPair -> reduceByKey -> map -> saveAsTextFile
作业在以下配置下运行:
--master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3
(每个数据节点的执行程序,使用的内核数量一样多)
--master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3
(减少内核数量)
--master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12
(更少的核心,更多的执行程序)
运行时间:
50分钟15秒
55分钟48秒
31分钟23秒
(在pwilmot的回答之后添加了以下内容。)
性能监视器屏幕截图如下:
图表大致分为两部分:
如图所示,(1)可以使用尽可能多的CPU功率。所以,这可能不是线程数量的问题。
如何解释这一结果?