我读过下面的wiki,但仍然无法澄清一件事。MapReduce:当两个块分布在不同节点上时,输入分割如何完成?
https://wiki.apache.org/hadoop/HadoopMapReduce
说,我有一个大的文件,该文件分为两个HDFS块和块物理保存到两台不同的机器。考虑在本地承载这两个块的群集中没有这样的节点。正如我理解的情况下TextInputFormat HDFS块的大小通常与分割大小相同。现在,由于有2个分割,2个地图实例将在2个独立的机器中产生,这些机器在本地保存这些块。现在假定HDFS文本文件已在一行的中间被破坏以形成块。现在hadoop会将第二台机器上的第二台机器复制到第一台机器中,这样它可以提供第二台机器的第一行(断开的一半)以完成第一台机器的最后一个虚线?
看一看本http://stackoverflow.com/questions/ 14291170/how-do-hadoop-process-records-records-split-across-block-boundaries –
感谢Magham,这真的很有帮助。所以几乎每个映射器都必须从另一个datanode复制下一个块。所以这只是本地任务的一半。 –
请参阅关于同一主题的另一个讨论。 http://stackoverflow.com/questions/14291170/how-does-hadoop-process-records-records-split-across-block-boundaries – Saket