HDFS重點(讀寫流程)

一、HDFS的組成

  • NameNode 

       處理讀寫請求

  • SecondNamenode

       幫助namenode合併元數據

  • Datanode

       存儲真正的數據

二、HDFS的讀寫流程

HDFS的讀流程

1、客戶端通過DistributeFileSystem向NameNode請求上傳文件
2、NameNode查看文件是否存在,倘若沒則向客戶端響應
3、客戶端請求上傳第一個block,並請求返回這三個dataNode節點
4、客戶端通過FSDatainputStreamdn1發送請求,dn1調用dn2,dn2調用dn3,直到通道建成
5、dn1、dn2、dn3逐級應答客戶端
6、客戶端向dn1發送第一個packet,dn1-->dn2-->dn3依次傳遞
7、根據文件大小判斷是否繼續上傳block

 

HDFS的寫流程

1、客戶端向NameNode發出寫文件請求
2、檢查是否已存在文件、檢查權限。若通過檢查,直接將操作寫入EditLog,並返回輸出流對象
3、client端按128MB的塊切分文件
4、client將NameNode返回的分配的可寫的DataNode列表和Data數據一同發送最近的第一個DataNode節點,多個節點形成通道
5、client每向第一個DataNode寫入一個packet,這個packet便會直接在pipeline裏傳給第二個、第三個…DataNode
6、每個DataNode寫完一個塊後,會返回確認信息
7、寫完數據,關閉輸輸出流發送完成信號給NameNode
8、(注:發送完成信號的時機取決於集羣是強一致性還是最終一致性,強一致性則需要所有DataNode寫完後才向NameNode彙報。最終一致性則其中任意一個DataNode寫完後就能單獨向NameNode彙報,HDFS一般情況下都是強調強一致性

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章