我按照说明操作 http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
我将--num-executors设置为13,即使我只有8个工作节点。在spark程序中,我明确设置了大量分区
val myPartitioner = new HashPartitioner(20)
spark程序运行正常,但在执行程序控制台中,它始终只显示8个执行程序。不应该显示13?
答案 0 :(得分:0)
link中提到的--num-executors适用于YARN群集模式。
尝试在conf / spark-env.sh中设置以下环境变量,以增加独立或其他群集模式下的工作人员数量,
SPARK_WORKER_INSTANCES
每台计算机上运行的工作程序实例数(默认值:1)。如果您拥有非常大的机器并且想要多个Spark工作进程,则可以将其设置为1以上。如果设置了此项,请确保明确设置SPARK_WORKER_CORES以限制每个工作程序的核心,否则每个工作程序将尝试使用所有核心。
答案 1 :(得分:0)
确保spark.dynamicAllocation.enabled
设置为 false 。默认情况下,它设置为false,所以如果你没有改变它,它应该没问题。
通过在spark-defaults.conf中添加spark.executor.instances 13
来修改执行程序的数量。或者通过添加代码:
conf = new SparkConf()
.setMaster("yarn-client")
....
.set("spark.executor.instances", "13")