【问题标题】:how to tune out of memory exception spark如何调出内存异常火花
【发布时间】:2016-09-12 19:05:39
【问题描述】:

我有 11 个节点,每个节点有 2G 内存和 16 个内核,我尝试使用这个提交我的 spark 应用程序

./bin/spark-submit --class myapp.Main --master spark://Name:7077 --conf spark.shuffle.memoryFraction=0 --executor-memory 2G --deploy-mode client /home/mbala/fer/myjars7/etlpersist.jar /home/mfile80.csv 

在 Slaves 文件中,我没有在启动此命令时添加节点的 ip,因为我认为在客户端模式下,驱动程序必须在此节点中运行。

但是每当我尝试运行它时,我都会出现内存不足异常(有时是因为 GC 或堆),我尝试了 spark 网站和 stackOverflow 中建议的许多解决方案,我还尝试最小化我的代码,我使用了 MemoryAndDiskStorage 但即使我仍然有这个问题

Ps:我使用这条线是因为我在这个论坛上找到了它作为解决方案

--conf spark.shuffle.memoryFraction=0

我应该尽量减少核心数量吗?因为我认为如果我使用只有 2G 内存的 16 个内核,那将不足以进行 shuffle

【问题讨论】:

    标签: performance hadoop apache-spark cluster-computing


    【解决方案1】:

    您能否尝试在命令中使用小 g--executor-memory--driver-memory 选项,这将对您有所帮助.

    当您将执行程序内存设置为 2GB 时。然后它只分配 0.6% 的原始内存用于存储和执行,并从 0.6% 获取 0.5% 作为存储内存的原始记忆。因此,只有 0.5% 的内存可供执行。

    你应该理解memory management这个概念。它将帮助您调试应用程序。

    【讨论】:

    • 当我尝试输入超过 1G 的文件时,我仍然拥有它
    • 我添加了有关内存管理配置的详细信息。请通过它。
    • @asma,你有什么突破吗?
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2017-02-02
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    相关资源
    最近更新 更多