【问题标题】:Different ways of configuring the memory to the TaskTracker child process (Mapper and Reduce Tasks)为TaskTracker子进程配置内存的不同方式(Mapper和Reduce Tasks)
【发布时间】:2011-11-06 14:49:25
【问题描述】:

使用 -Xmx 设置 mapred.job.map.memory.mbmapred.child.java.opts 以控制 Mapper 和 Reduce 任务使用的最大内存有什么区别?哪个优先?

【问题讨论】:

    标签: memory hadoop mapreduce task


    【解决方案1】:

    -Xmx指定已分配jvm的最大堆空间。这是为对象分配保留的空间,由garbage collector 管理。另一方面,mapred.job.map.memory.mb 指定 Hadoop 任务子进程允许的最大 virtual memory。如果超过最大堆大小,JVM 会抛出 OutOfMemoryException。

    JVM 可能使用比最大堆大小更多的内存,因为它还需要空间来存储对象定义(permgen 空间)和堆栈。如果进程使用的虚拟内存比mapred.job.map.memory.mb 多,则会被hadoop 杀死。

    所以一个不会优先于另一个(它们测量内存使用的不同方面),但-Xmx 是 JVM 的参数,mapred.job.map.memory.mb 是任务虚拟内存的硬上限尝试可以使用,由 hadoop 强制执行。

    希望这有帮助,记忆很复杂!我目前对为什么我的 JVM 进程在my SO post 中使用虚拟内存中最大堆大小的几倍感到困惑。

    【讨论】:

    • 嗨。这对非 java 自定义映射器/缩减器任务有何影响?有没有办法限制自定义映射器/减速器脚本的内存分配?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多