Apache spark 远程火花塞不能与纱线一起工作

Apache spark 远程火花塞不能与纱线一起工作,apache-spark,yarn,pyspark,Apache Spark,Yarn,Pyspark,我正在尝试使用spark提交脚本从spark群集之外的其他服务器(运行spark 1.4.0、hadoop 2.4.0和Thread)提交spark作业: spark/bin/spark-submit --master yarn-client --executor-memory 4G myjobScript.py 我的想法是,我的应用程序永远不会从接受状态通过,它会粘在上面: 15/07/08 16:49:40 INFO Client: Application report for appli

我正在尝试使用spark提交脚本从spark群集之外的其他服务器(运行spark 1.4.0、hadoop 2.4.0和Thread)提交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执行相同的脚本,它将正确运行

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

 <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>

warn.resourcemanager.hostname
54.54.54.54
.resourcemanager.address
54.54.54.54:8032
输入您的ResourceManager主机名。
warn.resourcemanager.scheduler.address
54.54.54.54:8030
输入您的ResourceManager主机名。
warn.resourcemanager.resourcetracker.address
54.54.54.54:8031
输入您的ResourceManager主机名。
其中54.54.54.54是我的resourcemanager节点的IP

为什么会这样?我是否必须在Thread中配置其他内容以接受远程提交?或者我错过了什么

非常感谢


JG

我怀疑这是一个问题,您的应用程序主控程序无法连接到您的本地主机。您是否检查过您接受的申请是否附有任何日志?您可能需要将
SPARK\u LOCAL\u IP
环境变量设置为集群可寻址的IP地址,以便纱线可以与您联系


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

我可以想到两件事:

  • spark submit应该查找HADOOP_CONF_DIR或Thread_CONF_DIR env变量,查找本地框(而不是远程框)中的warn-site.xml的位置

  • 如果上述操作完成,但仍然遇到相同的问题,则可能需要查看网络防火墙设置;spark将通过多个端口与Thread RM(etc)进行通信,spark内部通过AKKA集群进行通信,它们的端口非常随机。最好先打开所有tcp端口,看看是否有效


  • 希望这能有所帮助。

    您好,如果我在“纱线簇”模式下执行spark submit,它会工作得很好。我认为,正如您所说的纱线客户端模式的问题是,我的服务器的SPARK_LOCAL_IP无法从纱线主服务器访问(它们位于EC2中的不同VPC中)。顺便说一句,我之所以尝试使用Thread客户端模式,是因为我想将pyspark与我正在开发的django应用程序集成,但Thread cluster模式与pyspark不兼容(SparkContext不直接支持部署到Thread。请使用spark提交。)有趣。像下面提到的海鹰一样,您可能需要检查端口是否正确打开并接受来自公共IP地址的连接。我不熟悉EC2的VPC,但如果你的流量通过互联网,你可能需要设置一些端口转发。