2013-06-28 25 views
0

我有一臺hadoop集羣,有兩臺電腦,一臺作爲主設備,另一臺作爲從設備。我的輸入數據出現在Master的本地磁盤上,並且我還將輸入數據文件複製到HDFS系統中。現在我的問題是,如果我在這個集羣上運行MapReduce任務,那麼整個輸入文件只出現在一個系統上[我認爲這與MapReduce的「Data Locality」的基本原理相反]。我想知道是否有任何機制來分發/分區初始文件,以便輸入文件可以分佈在羣集的不同節點上。如何將初始輸入文件分發給Hadoop MapReduce中的節點?

+2

爲什麼你需要用2臺電腦擔心這個問題?爲什麼你應該爲此擔心,讓Hadoop處理數據的複製。 –

+0

如果你的複製因子大於2,你的文件實際上完全存在於兩臺機器上。 – climbage

+0

@climbage,但他的一個節點是主節點,所以它不會運行datanode – Chaos

回答

0

假設你的集羣由節點1和節點2組成。如果節點1是主節點,那麼在該節點上沒有運行Datanode。所以你在節點2上只有一個Datanode,所以當你說"so that the input files can be distributed on the different nodes of the cluster"時,我不確定你的意思,因爲用你當前的設置,你只有一個節點可以存儲數據。

但是如果您考慮一個通用的n節點集羣,那麼如果您將數據複製到HDFS中,則數據通過hadoop本身分佈到集羣的不同節點上,因此您不必擔心這一點。

+0

非常感謝你們。令我困惑的是如果有n個節點並且hadoop執行數據複製,它不會使用網絡帶寬[執行數據複製]。這是好的表現嗎? – udag

+0

無論何時將文件放在HDFS上,即使沒有複製,它都會使用網絡帶寬,但這是分佈式系統的重要組成部分。現在當你說「這是一個很好的性能」時,假設你指的是寫文件的速度,是的,它比寫在沒有發行的單個節點上要慢,但是Hadoop又被設計爲只寫一次的多種類型的數據,所以在文件寫入上具有良好的性能並不重要。 – Chaos

相關問題