spark exitCode: 12 是什么意思?
What does spark exitCode: 12 mean?
我正在尝试 运行 在 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 INFO TaskSetManager: Finished task 79.0 in stage 0.0 (TID 79) in 293 ms on ip-10-234-174-231.us-west-2.compute.internal (executor 2) (78/11102)
17/02/01 10:08:27 INFO YarnAllocator: Driver requested a total number of 19290 executor(s).
17/02/01 10:08:27 INFO ApplicationMaster: Final app status: FAILED, exitCode: 12, (reason: Exception was thrown 1 time(s) from Reporter thread.)
17/02/01 10:08:27 INFO SparkContext: Invoking stop() from shutdown hook
更新:
作为工作的一部分,我需要从 s3 读取一些数据,
是这样的:
sc.textFile( "s3n://stambucket/impressions/*/2017-01-0[1-9]/*/impression_recdate*)
如果我只用一天,就没有错误。
但是对于 9 我得到了这个 12 退出代码。更奇怪的是,考虑到 运行在客户端模式下 9 天就好了。
退出代码 12 是标准 exit code in linux 表示内存不足。
Spark 将每个执行程序进程使用的默认内存量设置为 1GB。无论集群 nodes/master 上的可用内存量如何,EMR 都不会覆盖此值。
一种可能的修复方法是将 maximizeResourceAllocation 标志设置为 true。
尝试增加ApplicationMaster的Java堆spark.yarn.am.memory=2G或将maxExecutors设置为合理的值spark.dynamicAllocation.maxExecutors=400
我正在尝试 运行 在 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 INFO TaskSetManager: Finished task 79.0 in stage 0.0 (TID 79) in 293 ms on ip-10-234-174-231.us-west-2.compute.internal (executor 2) (78/11102) 17/02/01 10:08:27 INFO YarnAllocator: Driver requested a total number of 19290 executor(s). 17/02/01 10:08:27 INFO ApplicationMaster: Final app status: FAILED, exitCode: 12, (reason: Exception was thrown 1 time(s) from Reporter thread.) 17/02/01 10:08:27 INFO SparkContext: Invoking stop() from shutdown hook
更新:
作为工作的一部分,我需要从 s3 读取一些数据,
是这样的:
sc.textFile( "s3n://stambucket/impressions/*/2017-01-0[1-9]/*/impression_recdate*)
如果我只用一天,就没有错误。
但是对于 9 我得到了这个 12 退出代码。更奇怪的是,考虑到 运行在客户端模式下 9 天就好了。
退出代码 12 是标准 exit code in linux 表示内存不足。
Spark 将每个执行程序进程使用的默认内存量设置为 1GB。无论集群 nodes/master 上的可用内存量如何,EMR 都不会覆盖此值。 一种可能的修复方法是将 maximizeResourceAllocation 标志设置为 true。
尝试增加ApplicationMaster的Java堆spark.yarn.am.memory=2G或将maxExecutors设置为合理的值spark.dynamicAllocation.maxExecutors=400