1. 程式人生 > >Hadoop Operations(Hadoop操作) 詳解(二) HDFS

Hadoop Operations(Hadoop操作) 詳解(二) HDFS

       最初,客戶機發出請求,使用Hadoop檔案系統api開啟指定的檔案。如果使用者有必要的許可權,則將請求傳送到namenode,以建立檔案元資料。新檔案的元資料條目;但是,它最初沒有相關的塊。對客戶機的響應表明開啟的請求是成功的,並且它現在可能開始寫入資料。在API級別,返回一個標準的Java流物件,儘管實現是特定於hdfs的。當客戶端將資料寫入到流中時,它被分割成包(不與TCP包或HDFS塊混淆),後者在記憶體中排隊。客戶端中的一個單獨的執行緒將從這個佇列中使用資料包,並且,必要時,聯絡namenode,請求一組datanodes,以便編寫下一個塊的副本。然後,客戶端直接連線到列表中的第一個datanode,它連線到第二個,連線到第三個。
這將形成用於此資料塊的複製管道,如圖2-3所示。然後,資料資訊包被流到第一個datanode,它將資料寫到磁碟,然後傳送到管道中的下一個datanode,該資料寫到磁碟上,等等。複製管道中的每個datanode都在成功地編寫了每個資料包。客戶端應用程式維護一個未接收到應答的包列表,當它收到響應時,它知道已經將資料寫入了管道中的所有節點。這種將包寫入管道的過程一直持續到達到了塊大小,這時客戶端返回到namenode,以供下一組datanodes的寫入。最終,客戶端表明它通過關閉流來完成傳送資料的操作,該流將所有剩餘的資料包傳送到磁碟,並更新namenode以指示檔案當前