2015-01-09 40 views
0

我想我理解Hadoop架構和結構的基礎知識。在將數據放入數據節點之前,Hadoop是否有多個本地臨時文件位置?

我想知道,進入Hadoop集羣的所有數據都必須通過相同的本地臨時文件位置嗎?

在數據被寫入數據節點之前,我將它緩存在本地臨時文件位置。這是每個namenode的單個文件位置,在namenode指定要存儲哪個datanode之前,將存儲進入羣集的所有數據(可能來自多個上傳)?或者Hadoop的甚至處理來自不同位置的多個simultaenous上傳(說的多臺計算機上載不同的大文件到基於雲的Hadoop集羣)

請幫我找不到該信息的任何地方

回答

0

我不認爲你明白這一點正確。名稱節點永遠不會收到任何發送給hdfs的數據。它所做的只是在數據節點上分配塊,因此只與元數據通信。該協議大致是這樣的(不知道細節,但你會得到的圖片):

  1. 客戶端從名稱節點請求一定的大小的塊。該塊可能必須在多臺機器上覆制。
  2. 名稱節點選擇一個數據節點,它將爲塊分配空間,並向其發送請求。
  3. 數據節點爲它的塊分配機器上的空間併發回回復。
  4. 如果名稱節點收到回覆,它會將回復發送回客戶端,併爲其提供數據節點上塊的IP地址和ID。
  5. 客戶端然後聯繫數據節點並啓動數據傳輸。數據是直接寫入磁盤還是留在內存中一段時間​​,但它只保留在數據節點上,這是實現細節。
  6. 如果需要複製,數據節點將重複客戶端已完成的操作並將該塊分配給其他數據節點。
  7. 最後,通知名稱節點並提交事務。

閱讀hadoop網站上的hadoop architecture book瞭解詳情。

+0

我想我現在更瞭解這個,非常感謝! 這是你在上面說的第五階段,讓我感到困惑。我不確定Hadoop用於以臨時方式處理數據的技術,即它是否直接寫入存儲塊,保存在內存中(以及此內存分配的位置)以及錯誤(如電源故障/網絡中斷)將面對不完整的數據塊。 非常感謝! – Chris

+0

是的,我敢肯定,如果在事務過程中發生故障,您將在客戶端發生異常,並且HDFS將回滾更改。例外情況是,如果在寫入足夠數量的好副本之後發生數據節點故障。否則,當您的文件關閉操作返回時,您可以放心,您的數據已被寫入磁盤並具有配置的副本數。 – miljanm

相關問題