Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala spark exitCode:12是什么意思?_Scala_Apache Spark_Cluster Computing_Yarn_Emr - Fatal编程技术网

Scala spark exitCode:12是什么意思?

Scala spark exitCode:12是什么意思?,scala,apache-spark,cluster-computing,yarn,emr,Scala,Apache Spark,Cluster Computing,Yarn,Emr,我正在尝试在EMR集群版本5.3.0上运行一个用scala 11.8和spark 2.1编写的spark应用程序。 我使用以下json配置集群: [ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties"

我正在尝试在EMR集群版本5.3.0上运行一个用scala 11.8和spark 2.1编写的spark应用程序。 我使用以下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": {}
  }
]
如果我尝试在客户机模式下运行,一切都会正常运行。尝试以群集模式运行应用程序时失败,状态代码为12

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

17/02/01 10:08:26信息任务集经理:在ip-10-234-174-231.us-west-2.compute.internal(执行者2)上以293毫秒的时间完成0.0阶段(TID 79)中的任务79.0(78/11102) 17/02/01 10:08:27信息所有者:驾驶员请求的执行者总数为19290人。 17/02/01 10:08:27信息应用程序管理员:最终应用程序状态:失败,退出代码:12,(原因:从报告程序线程引发异常1次。) 17/02/01 10:08:27信息SparkContext:从关机挂钩调用stop()

更新:

作为工作的一部分,我需要从s3读取一些数据, 大概是这样的:
sc.textFile(“s3n://stambucket/impressions/*/2017-01-0[1-9]/*/impression\u recdate*)
如果我只花一天,就不会有错误。
但是用9,我得到了这12个退出代码。甚至更奇怪的是,在客户端模式运行9天是很好的。

< P>退出代码12是一个发出内存信号的标准。< /P> Spark将每个执行器进程使用的默认内存量设置为1gb。无论群集节点/主机上的可用内存量如何,EMR都不会覆盖此值。
一种可能的修复方法是将maximizeResourceAllocation标志设置为true。

尝试增加ApplicationMaster的Java堆spark.Thread.am.memory=2G或将maxExecutors设置为合理的值spark.DynamicLocation.maxExecutors=400


谷歌搜索表明,这意味着您丢失了一些jar文件。这将适合在本地工作,但不适合在集群上工作。请检查您是否已配置了适当的jar,以便在任何地方都可以使用正确的jar,emr-5.x默认情况下已经使用Java 8,因此您的配置是不必要的。我不认为这些配置会导致此问题,但我不会uld建议删除这些配置。@TheArchetypalPaul如果确实是这样,我怎么知道哪个罐子丢失了?你能分享你找到的参考资料吗。@JonathanKelly你的回答让我有点惊讶,因为Spark的EMR说,如果你在集群模式下编写提交驱动程序,驱动程序将我使用Java 7,但设置环境可以确保执行者使用Java 8。为此,我需要设置此配置。@NetanelRabinowitz我刚刚搜索了“退出代码12”spark。我找到的几乎所有引用(不多)建议是JAR。我不知道如何识别丢失的JAR。为什么400是一个合理的值?此外,EMR在群集模式下运行,除非您使用
spark submit
并将
--部署模式设置为客户端模式-请参阅。根据spark文档,设置
spark.warn.am.memory
仅适用于client模式,您应该使用
spark.driver.memory
作为群集模式。