Hadoop输入拆分vs块

时间:2016-11-30 12:06:33

标签: hadoop mapreduce hadoop2

  1. 假设一个64 MB的块在节点A上并在其他2个节点(B,C)之间复制,map-reduce程序的输入分割大小为64 MB,这个分割只有节点A的位置吗?或者它是否具有所有三个节点A,b,C的位置?
  2. 由于数据是所有三个节点的本地数据,框架如何决定(选择)在特定节点上运行的地图任务?
  3. 如果输入分割大小大于或小于块大小,如何处理?

1 个答案:

答案 0 :(得分:0)

Hadoop知道块的位置。如果拆分完全等于一个块,那么Hadoop将尝试在同一节点上运行map任务以应用"数据位置"原则并保存所需的任何网络传输。

如果A,B,C全部可用,则地图任务将在最靠近客户端的节点上运行。如果节点A不可用,则它在B或C上运行,具体取决于哪一个最接近客户端。

如果A,B,C都不可用,那么Hadoop将找出A,B或C中哪个节点最接近客户端,然后选择与A相同的机架上的空闲节点(因为机架内传输更快)。如果整个机架都忙,那么它将别无选择,只能选择不同的机架和节点来处理拆分。拆分将临时复制到节点,处理后将从临时位置删除。

但是,如果输入分割大于块大小,则应用完全相同的原则。唯一的区别是Hadoop框架会在第2区和第2区分配+几行。到节点进行处理。