HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)
4.hdfs的工作機制
(工作機制的學習主要是為加深對分布式系統的理解,以及增強遇到各種問題時的分析解決能力,形成一定的集群運維能力)
?
注:很多不是真正理解hadoop技術體系的人會常常覺得HDFS可用于網盤類應用,但實際并非如此。要想將技術準確用在恰當的地方,必須對技術有深刻的理解
4.1 概述
1.????????HDFS集群分為兩大角色:NameNode、DataNode? (Secondary Namenode)
2.????????NameNode負責管理整個文件系統的元數據
3.????????DataNode 負責管理用戶的文件數據塊
4.????????文件會按照固定的大小(blocksize)切成若干塊后分布式存儲在若干臺datanode上
5.????????每一個文件塊可以有多個副本,并存放在不同的datanode上
6.????????Datanode會定期向Namenode匯報自身所保存的文件block信息,而namenode則會負責保持文件的副本數量
7.????????HDFS的內部工作機制對客戶端保持透明,客戶端請求訪問HDFS都是通過向namenode申請來進行
?
?
4.2 HDFS寫數據流程
4.2.1 概述
客戶端要向HDFS寫數據,首先要跟namenode通信以確認可以寫文件并獲得接收文件block的datanode,然后,客戶端按順序將文件逐個block傳遞給相應datanode,并由接收到block的datanode負責向其他datanode復制block的副本
4.2.2 詳細步驟圖
4.2.3 詳細步驟解析
1、根namenode通信請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在
2、namenode返回是否可以上傳
3、client請求第一個 block該傳輸到哪些datanode服務器上
4、namenode返回3個datanode服務器ABC
5、client請求3臺dn中的一臺A上傳數據(本質上是一個RPC調用,建立pipeline),A收到請求會繼續調用B,然后B調用C,將真個pipeline建立完成,逐級返回客戶端
6、client開始往A上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答隊列等待應答
7、當一個block傳輸完成之后,client再次請求namenode上傳第二個block的服務器。
4.3. HDFS讀數據流程
4.3.1 概述
客戶端將要讀取的文件路徑發送給namenode,namenode獲取文件的元信息(主要是block的存放位置信息)返回給客戶端,客戶端根據返回的信息找到相應datanode逐個獲取文件的block并在客戶端本地進行數據追加合并從而獲得整個文件
?
4.3.2 詳細步驟圖
?
4.3.3 詳細步驟解析
1、跟namenode通信查詢元數據,找到文件塊所在的datanode服務器
2、挑選一臺datanode(就近原則,然后隨機)服務器,請求建立socket流
3、datanode開始發送數據(從磁盤里面讀取數據放入流,以packet為單位來做校驗)
4、客戶端以packet為單位接收,現在本地緩存,然后寫入目標文件
?
?
?
?
總結
以上是生活随笔為你收集整理的HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS的API调用,创建Maven工程
- 下一篇: 大期贷预约要多久