我讀過下面的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