纱线上的火花,诊断:容器应要求终止。退出代码是 143

祝方泽*_*祝方泽 5 hadoop apache-spark

这是一个由python编写的简单spark。我收到“诊断:根据请求杀死容器。退出代码为 143”错误。这是我运行此代码的代码和脚本。
输入目录的大小大约为 100GB。但是如果我使用一个小的数据文件(3GB),它会工作得很好。

import sys
from pyspark import SparkContext

sc = SparkContext(appName="job_name")

data1 = sc.textFile(sys.argv[1])
d1 = data1.filter(lambda x: "a string" in x)
print d1.count()

sc.stop()

//-----------------------------------------//

input="xxxxx"
output="yyyyy"

hadoop fs -rmr $output
$SPARK_HOME/bin/spark-submit \
  --deploy-mode cluster \
  --master yarn \
  --num-executors 100 \
  --executor-cores 2 \
  --driver-cores 2 \
  --executor-memory 8g \
  --driver-memory 4g \
  stat.py \
  $input \
  $output
Run Code Online (Sandbox Code Playgroud)

所以我写了一个 hadoop 流来完成这项工作,我得到了:

Error: Java heap space
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Run Code Online (Sandbox Code Playgroud)

我的火花代码似乎是同样的错误。

现在我怀疑输入中可能有一些记录太大了。

/*
* 在 2016-12-16 添加
*/
我的 hadoop 流正在工作 ^-^,配置如下:

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.5.0-cdh5.3.2.jar
   -D mapred.reduce.tasks=0 \
   -D mapreduce.map.memory.mb=3192 \
   -D mapreduce.reduce.memory.mb=3192 \
   -D mapreduce.map.java.opts=-Xmx2872m \
   -D mapreduce.reduce.java.opts=-Xmx2872m \
   -D mapred.child.java.opts=-Xmx2048m \
   -D mapreduce.task.io.sort.mb=512 \
   -mapper "mapper.py" \
   -file mapper.py \
   -input $input \
   -output $output
Run Code Online (Sandbox Code Playgroud)

但是我的火花代码仍然无法运行,无论我如何调整它。这是我的火花代码配置:

$SPARK_HOME/bin/spark-submit \
    --deploy-mode cluster \
    --master yarn \
    --num-executors 200 \
    --executor-cores 2 \
    --driver-cores 2 \
    --executor-memory 20g \
    --driver-memory 16g \
    --verbose \
    stat.py \
    $input \
    $output

Here is my spark-defaults.conf:
spark.yarn.executor.memoryOverhead      4096
spark.yarn.driver.memoryOverhead        4096
spark.memory.storageFraction    0.9
Run Code Online (Sandbox Code Playgroud)

有了这些信息,有谁知道如何调整火花。