java—允许mapreudce输入拆分大小大于容器或tasktracker jvm堆大小吗?

mbzjlibv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(347)

通常,hadoop input split size定义处理数据的Map器(容器)的数量。
例如,如果一个文件是2gb(块大小1gb,使用2个块来存储此文件),则该文件将存储在2个hdfs块中。但是如果我将输入分割大小指定为2gb,则将分配一个Map器来处理此文件。如果我没有指定分割大小,那么将分配两个Map器(每个块一个Map器)。
问题是——如果我的Map器jvm堆大小只有1gb,而我使用的输入拆分大小是2gb,会怎么样?我的mapper jvm会耗尽内存吗?始终使输入拆分大小等于或小于Map器jvm堆大小是一种好的做法吗?

zkure5ic

zkure5ic1#

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

相关问题