spark job利用所有节点

时间:2016-02-29 13:25:53

标签: amazon-web-services apache-spark yarn

所以我在AWS上的设置是1个主节点和2个执行器节点。 我希望两个执行器节点都可以完成我的任务,但我只能看到一个正常注册,另一个是ApplicationMaster。我还可以看到当时处理了16个分区。

我现在使用spark-shell。所有默认设置,EMR 4.3。启动shell的命令:

export SPARK_EXECUTOR_MEMORY=20g
export SPARK_DRIVER_MEMORY=4g
spark-shell --num-executors 2 --executor-cores 16 --packages com.databricks:spark-redshift_2.10:0.6.0 --driver-java-options "-Xss100M" --conf spark.driver.maxResultSize=0

任何想法从哪里开始调试?或者这是正确的行为吗?

1 个答案:

答案 0 :(得分:1)

我认为问题是您正在以'集群'模式运行,并且spark驱动程序在其中一个执行程序节点上的应用程序主机内运行,并使用1核心。因此,因为您的执行程序需要16个内核,其中一个节点只有15个可用内核,并且没有启动第二个执行程序所需的资源。您可以通过查看YARN UI中的“节点”来验证这一点。 解决方案可能是以客户端模式--deploy-mode client启动spark shell或更改执行程序核心数。

相关问题