Apache Spark没有加载运行时环境配置,无法提交作业

时间:2016-05-18 00:10:49

标签: apache-spark configuration

我的Apache Spark独立群集运行良好,直到我突然尝试使用screen运行作业。 (仅供参考,我已经移除了屏幕并重新启动了机器)。基本上,发生了什么是Application master拒绝加载任何环境配置,让我的spark-submit挂起,直到最终超时。以下是AM环境页面的样子:

environment

以下是我提交Spark工作的方式:

$SPARK_HOME/bin/spark-submit --class app.package.TrainNetSpark --master spark://master.cluster:7077 --deploy-mode client --driver-memory 28G --executor-memory 14G --num-executors 7 --executor-cores 8 --conf spark.driver.maxResultSize=20g --conf spark.executor.heartbeatInterval=10000000 --conf spark.network.timeout=50000000 path/to/my.jar

我可以确认所有从站和主节点上的资源都已释放。一切似乎一直运行得很好,直到突然:

16:57:08,010 ERROR ~ Application has been killed. Reason: All masters are unresponsive! Giving up.
16:57:08,095 ERROR ~ Error communicating with MapOutputTracker
java.lang.InterruptedException
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1325)
...
16:57:08,099 ERROR ~ Uncaught exception in thread appclient-registration-retry-thread
org.apache.spark.SparkException: Error communicating with MapOutputTracker
    at org.apache.spark.MapOutputTracker.askTracker(MapOutputTracker.scala:114)
    at org.apache.spark.MapOutputTracker.sendTracker(MapOutputTracker.scala:120)
...
16:57:08,103 ERROR ~ Uncaught exception in thread Thread[appclient-registration-retry-thread,5,main]
org.apache.spark.SparkException: Exiting due to error from cluster scheduler: All masters are unresponsive! Giving up.

我的spark-defaults.conf看起来像这样:

spark.master spark://master.cluster:7077
spark.driver.memory 30g
spark.driver.cores 4
spark.driver.maxResultSize 20g
spark.executor.extraLibraryPath /usr/lib

spark.driver.port 7001 
spark.fileserver.port 7002 
spark.broadcast.port 7003 
spark.replClassServer.port 7004 
spark.blockManager.port 7005 
spark.executor.port 7006

spark.broadcast.factory org.apache.spark.broadcast.HttpBroadcastFactory
spark.serializer org.apache.spark.serializer.KryoSerializer

我可以确认我在申请中没有改变任何内容。唯一的区别是我在行为开始时尝试在screen内运行作业。我已经删除了屏幕并且硬重启了我的主人并重新启动了工作人员守护进程。

似乎核心问题是应用程序主机未成功加载运行时信息。我怎样才能解决这个问题?谢谢!

更新

我已将问题缩小到(奇怪地)我的spark-submit功能。如果我删除除master之外的所有参数,应用程序将按预期继续。我的提交命令有什么问题?

2 个答案:

答案 0 :(得分:0)

尝试使用class属性作为命令的最后一个参数。

$SPARK_HOME/bin/spark-submit --master spark://master.cluster:7077 --deploy-mode client --driver-memory 28G --executor-memory 14G --num-executors 7 --executor-cores 8 --conf spark.driver.maxResultSize=20g --conf spark.executor.heartbeatInterval=10000000 --conf spark.network.timeout=50000000  --class app.package.TrainNetSpark path/to/my.jar

答案 1 :(得分:0)

我能够解决问题,重置所有环境变量并执行以下操作:

我已将SPARK_HOMESPARK_MASTER_IPSPARK_MASTER_PORTSPARK_CONF_DIR添加到bash_profile。然后我将原始spark-submit命令中的所有配置变量添加到spark-defaults.conf。重启主人。最后,我使用了干净的spark-submit,如下所示:

$SPARK_HOME/bin/spark-submit --class my.package.TrainNetSpark --master spark://master.cluster:7077 path/to/my.jar

我退出了,重新登录,又恢复了工作。