我正在尝试使用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集群上?如果您的本地主机远离集群,以避免通信延迟,那么这可能是一个更好的选择。
我能想到两件事:
-
spark-submit应该查找HADOOP_CONF_DIR或YARN_CONF_DIR环境变量来查找yarn-site.xml在本地盒子中的位置,而不是在远程盒子中。
-
如果完成以上操作,仍然遇到相同的问题,您可能需要查看网络防火墙设置;spark将通过多个端口与YARN RM(等)通信,spark内部通过AKKA集群通信,它们的端口是相当随机的。