spark submit executor memory / failed batch

时间:2016-06-01 16:27:31

标签: apache-spark spark-streaming

我有两个关于火花流的问题:

  1. 我有一个以20 seconds批处理间隔运行的火花串流应用程序和收集数据,4000 batches中有18 batches因异常而失败:
  2.   

    无法计算拆分,阻止输入-0-1464774108087未找到

    我认为此时数据大小大于火花可用内存,同时应用StorageLevelMEMORY_ONLY

    请告知如何解决此问题。

    1. 同样在我下面使用的命令中,我使用执行程序内存20G(数据节点上的总RAM是140G),这是否意味着所有内存都为此应用程序全部保留,如果我有多个火花流,会发生什么申请?
    2. 几次申请后,我不会用完内存吗?我需要那么多记忆吗?

        

      /usr/iop/4.1.0.0/spark/bin/spark-submit --master yarn --deploy-mode   客户端--jars /home/blah.jar --num-executors 8 --executor-cores   5 --executor-memory 20G - driver-memory 12G --driver-cores 8
        --class com.ccc.nifi.MyProcessor Nifi-Spark-Streaming-20160524.jar

1 个答案:

答案 0 :(得分:0)

似乎您的执行者的内存将满,请尝试以下几种优化技术:

  1. 不是使用StorageLevel而是MEMORY_AND_DISK。
  2. 使用Kyro序列化来进行内存和序列化的缓存,该序列化比普通的java serialization.f yougo更快且更好。
  3. 检查是否存在gc,您可以在正在执行的任务中找到。