为什么Spark退出exitCode:16?

时间:2017-01-04 16:32:50

标签: apache-spark

我使用Spark 2.0.0和Hadoop 2.7并使用yarn-cluster模式。每次,我都会收到以下错误:

17/01/04 11:18:04 INFO spark.SparkContext: Successfully stopped SparkContext
17/01/04 11:18:04 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 16, (reason: Shutdown hook called before final status was reported.)
17/01/04 11:18:04 INFO util.ShutdownHookManager: Shutdown hook called
17/01/04 11:18:04 INFO util.ShutdownHookManager: Deleting directory /tmp/hadoop-hduser/nm-local-dir/usercache/harry/appcache/application_1475261544699_0833/spark-42e40ac3-279f-4c3f-ab27-9999d20069b8
17/01/04 11:18:04 INFO spark.SparkContext: SparkContext already stopped.

但是,我确实得到了正确的打印输出。 相同的代码在Spark 1.4.0-Hadoop 2.4.0中工作正常,我没有看到任何退出代码。

2 个答案:

答案 0 :(得分:6)

此问题 .sparkStaging未清除,如果应用程序退出错误 https://issues.apache.org/jira/browse/SPARK-17340在Spark 1.4(Affects Version / s:1.5.2,1.6.1,2.0.0)之后启动

问题是:运行Spark(纱线,群集模式)和查杀应用程序时 .sparkStaging没有清理。

当这个问题发生时,在Spark 2.0.X中引发了exitCode 16

ERROR ApplicationMaster: RECEIVED SIGNAL TERM
INFO ApplicationMaster: Final app status: FAILED, exitCode: 16, (reason: Shutdown hook called before final status was reported.)

在您的代码中,有可能会杀死应用程序吗? 如果是这样 - 它不应该在Spark 1.4中看到,但应该在Spark 2.0.0中看到

请搜索您的代码“退出”(就好像您的代码中有这样的代码一样,错误不会在Spark 1.4中显示,但会在Spark 2.0.0中显示)

答案 1 :(得分:1)

似乎JVM使用了多余的内存,尝试添加属性

您的yarn-site.xml中

yarn.nodemanager.vmem-check-enabled false

Reference