spark exitCode:12是什么意思?

Net*_*itz 5 scala cluster-computing emr hadoop-yarn apache-spark

我正在尝试运行一个用scala 11.8编写的spark应用程序,在EMR集群版本5.3.0上使用spark 2.1.我使用以下json配置了集群:

[
  {
    "Classification": "hadoop-env", 
    "Configurations": [
        {
            "Classification": "export", 
            "Configurations": [], 
            "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
        }
    ], 
    "Properties": {}
  }, 
  {
    "Classification": "spark-env", 
    "Configurations": [
        {
            "Classification": "export", 
            "Configurations": [], 
            "Properties": {
                "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
            }
        }
    ], 
    "Properties": {}
  }
]
Run Code Online (Sandbox Code Playgroud)

如果我试图在客户端模式下运行一切运行正常.尝试使用群集模式运行应用程序时,它失败,状态码为12.

这是主日志的一部分,我在其中看到状态代码:

17/02/01 10:08:26 INFO TaskSetManager:完成任务79.0,阶段0.0(TID 79),在293毫秒,在ip-10-234-174-231.us-west-2.compute.internal(executor 2) (78/11102)17/02/01 10:08:27 INFO YarnAllocator:司机要求总共19290名遗嘱执行人.17/02/01 10:08:27 INFO ApplicationMaster:最终应用程序状态:FAILED,exitCode:12,(原因:从Reporter线程中抛出了1次异常.)17/02/01 10:08:27 INFO SparkContext:从shutdown hook调用stop()

更新:

作为工作的一部分,我需要从s3中读取一些数据,如下所示: sc.textFile( "s3n://stambucket/impressions/*/2017-01-0[1-9]/*/impression_recdate*) 如果我只花一天时间,则没有错误.但是9我得到了这12个退出代码.甚至更奇怪的是考虑到在客户端模式下运行9天的事实就好了.

Net*_*itz 2

退出代码 12 是Linux 中表示内存不足的标准退出代码。

Spark 将每个执行程序进程使用的默认内存量设置为 1GB。无论集群节点/主节点上的可用内存量有多少,EMR 都不会覆盖此值。一种可能的修复方法是将 maximizeResourceAllocation 标志设置为 true。