1、hdfs寫數據
1、客戶端通過Hadoop文件系統相干API 發送要求。打開1個要寫入的文件,如果該用戶具有足夠的權限,這1要求會被發送到NameNode,在NameNode上建立該文件的元數據。
2、剛建立的新文件元數據并未將該文件和任何數據塊關聯,客戶端僅收到打開文件成功的響應。
3、客戶端在API層面上將數據寫入流中,數據被自動拆分成數據包,數據包保存在內存隊列中。
4、客戶端有1個獨立的線程,它從隊列中讀取數據包,并同時向NameNode要求1組DataNode列表,以便寫入下1個數據塊的多個副本。
客戶端直接連接到列表中的第1個DataNode,而該DataNode又連接到第2個DataNode,終究,客戶端將剩余數據包全部寫入磁盤,關閉數據流并通知NameNode文件寫操作終了。全部進程中,DataNode將確認接收數據被成功寫入,客戶端保護著1個列表,記錄了哪些數據包還沒有收到消息,DataNode寫滿后,客戶端重新向NameNode申請下1個DataNode。
如果在復制進程中,產生毛病,管道會立即關閉,已發出未收到確認的數據包會被回退到隊列中。