2015-08-27 66 views

回答

4

當我們使用put和copyFromLocal命令時,使用mapreduce作業將本地文件複製到HDFS。在哪裏它實際上使用Streaming由hadoop客戶端二進制文件本身使用客戶端庫和隊列。

將內容複製到HDFS時,hadoop/hdfs二進制命令利用DistributedFileSystem類與名稱節點進行交互,以驗證並在名稱空間中創建關於要複製的文件的條目。

然後,客戶機使用DFSOutputStream類將數據轉換成數據包,並放置在內部data queue.

DataStreamer類會消耗隊列內容。此外,DataStreamer類與Namenode進行協商以分配數據節點的列表(包括複製),並且這些數據節點的列表形成data pipe line

DataStreamer類只通過Streaming將數據包發送到數據管道中的第一個節點,並且完成時第一個節點級聯到下一個節點,並繼續相同的過程,直到流水線中的最後一個節點。

我建議你通過解剖一個文件寫章從權威指南書。

+0

在發佈此問題之前,我已閱讀權威指南中的文件解析。我想要了解的一件事是,將用於寫入的地圖數量與MR模式的地圖數量相同,其中對於每個地圖運行的分割或不同的範例。我無法從權威指南中獲取信息。 –

+0

複製任務不會由MR作業完成。它完全是一個流式作業,沒有涉及映射器。它全部位於hadoop客戶端和hdfs之間,其中所使用的模式僅爲Streaming,不涉及映射器。如果有幫助請接受答案 – sureshsiva

+0

'copyToLocal'會發生什麼情況? – YoungHobbit

相關問題