当多个映射任务在同一个数据注释上并行运行时,数据节点内存会出现混乱


众所周知,map任务有"io.sort.mb"来限制排序阶段使用的内存。

1( 我的困惑是:假设数据节点有3G空闲内存,我设置"io.sort.mb"1024m当几个映射任务在同一个数据节点上并行运行,并且它们需要节点上超过3G空闲内存的内存时,会发生什么。

类似的问题:

2( "mapred.child.java.opts"-Xmx1024m提供了子jvm可以使用的最大内存,如果当多个映射任务在1(中提到的数据节点上并行运行时,这些并行映射是否可能占用整个3G空闲内存,那么会发生什么。

hbase上的类似问题:

3( 假设:在hbase上设置BlockCache 0.3*heap,设置Memstore 0.4*heap。在极端情况下,regionserver中存在2个区域。两个2区域都使用0.6*heap=1.2 heap。场景会发生吗?

如果您知道以上问题(如果情况可能发生(,欢迎并感谢您的分享。

至少前两个问题的答案来自于对定义这两个属性的配置文件的关注。

它们在mapred-default.xml中定义,并且可以在mapred-site.xml中选择性地重写。

这些配置文件管理整个数据节点,因此配置不是基于单个作业或任务。

因此,例如io.sort.mb为1024意味着将为运行该节点的所有映射任务的排序阶段分配1024mb的数据节点。它在所有地图任务之间共享。

我不完全确定第三个问题,但我的猜测是,它应该按照类似的思路工作。

最新更新