我的Apache Spark独立群集运行良好,直到我突然尝试使用screen
运行作业。 (仅供参考,我已经移除了屏幕并重新启动了机器)。基本上,发生了什么是Application master拒绝加载任何环境配置,让我的spark-submit
挂起,直到最终超时。以下是AM环境页面的样子:
以下是我提交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之外的所有参数,应用程序将按预期继续。我的提交命令有什么问题?
答案 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_HOME
,SPARK_MASTER_IP
,SPARK_MASTER_PORT
和SPARK_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
我退出了,重新登录,又恢复了工作。