我正在尝试使用spark-submit脚本从我的Spark Cluster之外的其他服务器(运行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中的远程服务器中设置了纱线配置,如下所示:
<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中配置其他内容才能接受远程提交?或者我错过了什么?
非常感谢
JG
答案 0 :(得分:2)
我怀疑YARN上的应用程序主机无法联系到您的本地主机是一个问题。您是否检查过您接受的应用程序是否附有任何日志?您可能需要将SPARK_LOCAL_IP
环境变量设置为群集可寻址的IP地址,以便YARN可以回复给您。
您是否尝试过运行纱线群集模式,以便您的驱动程序实际上会在您的YARN群集上运行?如果localhost远离您的群集以避免通信延迟,那么这可能是更好的选择。
答案 1 :(得分:1)
我可以想到两件事:
spark-submit应该在本地方框中查找关于yarn-site.xml位置的HADOOP_CONF_DIR或YARN_CONF_DIR env变量,而不是远程方框。
如果完成上述操作,仍然遇到同样的问题,您可能需要查看网络防火墙设置; spark将通过多个端口与YARN RM(等)通信,而Spark内部通过AKKA集群进行通信,并且它们的端口非常随机。最好先尝试打开所有tcp端口,看看是否有效。
希望这可以提供帮助。