【问题标题】:Is it ok to have mapreudce input split size larger than container or tasktracker jvm heap size?是否可以让 mapreudce 输入拆分大小大于容器或 tasktracker jvm 堆大小?
【发布时间】:2016-11-08 07:12:52
【问题描述】:

通常,hadoop 输入拆分大小定义了处理数据的映射器(容器)的数量。

例如,如果一个文件是 2GB(块大小为 1GB,2 个块用于存储该文件),则该文件将存储在 2 个 HDFS 块中。但如果我将输入拆分大小指定为 2GB,则将分配 1 个映射器来处理此文件。如果我不指定分割大小,那么将分配两个映射器(每个块 1 个映射器)。

问题是——如果我的映射器 jvm 堆大小只有 1GB 而我使用输入拆分大小为 2GB 怎么办?我的映射器 JVM 会耗尽内存吗?始终使输入拆分大小等于或小于映射器 jvm 堆大小是一种好习惯吗?

【问题讨论】:

    标签: java hadoop jvm


    【解决方案1】:

    一个输入拆分通常会有多个记录。您的映射器一次只能获取一条记录。因此,只要您的记录中包含的键或值不超过您的堆大小限制,您就可以了。假设您的值是超过堆大小的字符串/文本,那么您肯定会在映射器执行时看到 OutOfMemory 错误。

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 1970-01-01
      • 2013-12-05
      • 2011-01-07
      • 2022-06-10
      • 2015-12-11
      • 2012-04-04
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多