流程:
1.客戶端向NameNode通信請求上傳文件,附帶path
2.namenode進行檢查
檢查的內容:
1.hdfs的文件目錄
2.權限檢查
3.集群狀態
4.租約檢查
3.NameNode返回是否可以上傳
4.得到肯定回復后,客戶端切塊,再次請求存放的datanode地址。
5.響應返回給客戶端dn1,dn2,dn3的地址
6.客戶端向datanode請求建立管道:DataNode 1收到請求會繼續調用DataNode 2,然后DataNode 2調用DataNode 3,將整個pipeline建立完成,然后逐級返回客戶端。地址使用隊列存儲,dn1使用pop方法取出並刪除第一個值,將隊列傳輸給dn2...
7.datanode檢查自身是否能夠存儲,響應給客戶端
8.開始傳輸數據,以pocket為單位
9.dn1將pocket以此傳給dn2,dn2傳給dn3
10.傳輸完成,返回確認信息。將管道刪除,然后根據副本數做自動平衡。
1、與NameNode通信查詢元數據,找到文件塊所在的DataNode服務器
2、挑選一台DataNode(網絡拓撲上的就近原則,如果都一樣,則隨機挑選一台DataNode)服務器,請求建立socket流
3、DataNode開始發送數據(從磁盤里面讀取數據放入流,以packet(一個packet為64kb)為單位來做校驗)
4、客戶端以packet為單位接收,先在本地緩存,然后寫入目標文件
<property> <name>dfs.namenode.secondary.http-address</name> <value>hdp02:50090</value> </property>
1.當記錄的條數達到100W條或者時間達到3600S時提示namenode進行checkpoint
2.edits_inpogress停止記錄,將記錄拷貝到edits_00000n里
3.將edits_00000n拷貝到sn,將fsimage拷貝到sn(如果sn沒有啟動,那么此步驟由namenode執行)
4.內存將edits與fsimage的內容進行整合,得到新的fsimage。
5.把新的fsimage傳給namenode checkpoint完成
從形式上講,元數據可分為內存元數據和元數據文件兩種。其中NameNode在內存中維護整個文件系統的元數據鏡像,用於HDFS的管理;元數據文件則用於持久化存儲。
第一類是文件和目錄自身的屬性信息,例如文件名、目錄名、父目錄信息、文件大小、創建時間、修改時間等。
第二類記錄文件內容存儲相關信息,例如文件塊情況、副本個數、每個副本所在的Data Node 信息等。
第三類用來記錄HDFS中所有Data Node信息,用於Data Node管理。
fsimage:元數據鏡像文件。
edits:日志文件。
fstime:保存最近一次Checkpoint的時間。
VERSION:標志性文件,最后被創建,它的存在表明前三個元數據文件的創建成功。
fsimage是HDFS文件系統存於硬盤中的元數據檢查點,里面記錄了自最后一次檢查點之前HDFS文件系統中所有目錄和文件的序列化信息;而edits保存了自最后一次檢查點之后所有針對HDFS文件系統的操作,比如:增加文件、重命名文件、刪除目錄等等。