2013-07-10 49 views
0

我有一個主節點和兩個位於不同服務器的數據節點。對於這兩個數據節點,它們中的每一個在其自己的HDFS中都有一個日誌文件。現在我想運行Hadoop在主節點上執行map/reduce,輸入應該是來自兩個數據節點HDFS的兩個日誌文件。我可以這樣做嗎?如果可以,我如何設置輸入路徑? (例如hadoop jar wordcount.jar datanode1 /輸入/日誌文件1 datanode2 /輸入/日誌文件2輸出...像這樣?)是否有可能來自不同datanode的HDFS在不同服務器的輸入?來自不同服務器的Hadoop輸入

回答

1

當你說Hadoop,沒有什麼像它自己的HDFS。 HDFS是一個分佈式 FS,並且是傳播跨Hadoop集羣中所有機器作爲單個FS。

您只需將兩個文件放在一個HDFS目錄中,並將該目錄作爲輸入發送給MapReduce作業。

FileInputFormat.addInputPath(job, new Path("/path/to/the/input/directory")); 

對於MapReduce作業同樣適用。雖然您將作業提交給JobTracker,但作業實際上在集羣的所有節點上以分佈式時尚運行,其中要處理的數據存在。

哦,還有一件事... HDFS中的文件並不是作爲一個整體存儲在任何特定的機器上。它被切成小塊 64MB(可配置),這些塊在羣集中隨機存儲在不同的機器上。

+0

聽起來不錯。謝謝。還有一件事,如果我想用我自己的map/reduce方法運行hadoop,就像這樣:hadoop jar xxx.jar input output ... right? – user2552010

+0

你說得對。如果您覺得您的查詢已回覆,以便其他人可以從中受益,請隨時接受答案。 – Tariq

+0

嗨:關於Hadoop,我還有以下問題: – user2552010

相關問題