【问题标题】:spark submit executor memory/failed batchspark提交执行程序内存/失败的批处理
【发布时间】:2016-10-01 03:27:25
【问题描述】:

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

  1. 我有一个 Spark 流应用程序正在运行并在 20 seconds 批处理间隔中收集数据,在 4000 batches 中有 18 batches 由于异常而失败:

无法计算拆分,未找到块 input-0-1464774108087

当时我假设数据大小大于 spark 可用内存,应用程序 StorageLevel 也是 MEMORY_ONLY

请告知如何解决此问题。

  1. 同样在我下面使用的命令中,我使用了 20G 的执行器内存(数据节点上的总 RAM 为 140G),这是否意味着所有内存都为这个应用程序保留了全部,如果我有多个火花流会发生什么应用?

在几个应用程序之后我不会耗尽内存吗?我需要那么多内存吗?

/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

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    您的执行程序内存似乎会变满,请尝试以下一些优化技术:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多