Spark over Yarn - 不正确的Application Master选择

时间:2015-02-04 09:38:20

标签: hadoop apache-spark yarn

我正尝试使用以下命令使用Spark over Yarn激活一些作业(这只是一个示例,实际上我使用的是不同数量的内存和核心):

./bin/spark-submit --class org.mypack.myapp \
    --master yarn-cluster \
    --num-executors 3 \
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 1 \
    lib/myapp.jar \

当我查看Web UI以了解幕后真正发生的事情时,我注意到YARN正在选择Application Master作为不是Spark Master的节点。这是一个问题,因为真正的Spark Master节点强烈地参与分布式计算,导致不必要的网络数据传输(因为,当然,Spark master没有数据可以开始)。

对于我在测试中看到的内容,Yarn以完全随机的方式选择AM,我找不到一种方法强迫他选择Spark Master作为AM。

我的群集由4个节点(3个Spark Slaves,1个Spark Master)组成,具有64GB的总RAM和32个内核,基于HDP 2.4与HortonWorks构建。 Spark Master只托管namenode,三个slave是datanode。

1 个答案:

答案 0 :(得分:0)

您希望能够指定一个没有任何DataNode的节点来运行Spark Master。据我所知,这不是开箱即用的。

你可以做的是在运行NameNode的节点上以纱线客户端模式运行master,但这可能不是你想要的。

另一种方法是创建自己的Spark客户端(您指定使用YARN API来优先选择某些节点而不是其他节点用于Spark Master)。