远程spark-submit不能与YARN一起工作



我正在尝试使用spark-submit脚本从我的spark集群(运行spark 1.4.0, hadoop 2.4.0和YARN)之外的不同服务器提交spark作业:

spark/bin/spark-submit --master yarn-client --executor-memory 4G myjobScript.py

我的想法是我的应用程序永远不会从接受状态通过,它卡住了:

15/07/08 16:49:40 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:41 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:42 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:43 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:44 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:45 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:46 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:47 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:48 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)
15/07/08 16:49:49 INFO Client: Application report for application_1436314873375_0030 (state: ACCEPTED)

但是如果我在集群的主服务器上使用spark-submit执行相同的脚本,它会正常运行。

我已经在$YARN_CONF_DIR/yarn-site.xml中设置了远程服务器中的yarn配置,如下所示:

 <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>54.54.54.54</value>
 </property>
 <property>
   <name>yarn.resourcemanager.address</name>
   <value>54.54.54.54:8032</value>
   <description>Enter your ResourceManager hostname.</description>
 </property>
 <property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>54.54.54.54:8030</value>
   <description>Enter your ResourceManager hostname.</description>
 </property>
 <property>
   <name>yarn.resourcemanager.resourcetracker.address</name>
   <value>54.54.54.54:8031</value>
   <description>Enter your ResourceManager hostname.</description>
 </property>

其中54.54.54.54为我的resourcemanager节点的IP。

为什么会发生这种情况?我是否必须在YARN中配置其他东西以接受远程提交?或者我错过了什么?

Thanks a lot

我怀疑这是一个问题,您在YARN上的应用程序主机无法到达您的本地主机。你是否检查过你被接受的申请是否附有日志?您可能需要将SPARK_LOCAL_IP环境变量设置为集群可寻址的IP地址,以便YARN可以返回给您。

您是否尝试过运行YARN -cluster模式,以便您的驱动程序将实际运行在YARN集群上?如果您的本地主机远离集群,以避免通信延迟,那么这可能是一个更好的选择。

我能想到两件事:

  1. spark-submit应该查找HADOOP_CONF_DIR或YARN_CONF_DIR环境变量来查找yarn-site.xml在本地盒子中的位置,而不是在远程盒子中。

  2. 如果完成以上操作,仍然遇到相同的问题,您可能需要查看网络防火墙设置;spark将通过多个端口与YARN RM(等)通信,spark内部通过AKKA集群通信,它们的端口是相当随机的。

最新更新