2016-11-30 99 views
0
  1. 比方说,一个64 MB块在节点A上,并在2个其他节点(B,C)中复制,并且map-reduce程序的输入拆分大小为64 MB,这个拆分只有节点A的位置?或者它是否具有所有三个节点A,b,C的位置?
  2. 由于数据对于所有三个节点都是本地的,因此框架如何决定(挑选)要在特定节点上运行的映射任务?
  3. 如果输入分割大小大于或小于块大小,它是如何处理的?
+1

[Hadoop输入分割大小vs块大小]的可能重复(http://stackoverflow.com/questions/17727468/hadoop-input-split-size-vs-block-size) –

回答

0

Hadoop知道块位于何处。如果分割完全等于一个块,那么Hadoop将尝试在同一节点上运行地图任务以应用“数据局部性”原则并保存所需的任何网络传输。

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

如果A,B,C都不可用,那么Hadoop将找出A,B或C中哪个节点离客户机最近,然后选择与A相同机架上的空闲节点(因为机架内转账更快)。如果整个机架处于忙碌状态,那么它将别无选择,只能选择不同的机架和节点来处理分割。分割将被临时复制到节点,并且在处理之后,它将从临时位置被删除。

但是,如果输入拆分大于块大小,则应用完全相同的原则。唯一的区别是Hadoop框架将给出'从块2分割+几行'到节点进行处理。