客戶端寫數據到HDFS的流程:
client就是shell命令行
1.client先發送給namenode一個寫數據請求
2.namenode返回容許寫請求
3.client向namenode請求寫BLK1
4.namenode返回告知BLK1寫入哪幾個機器 (ex. dn1,dn2,dn3)
5.找dn1創建數據傳輸的連接
6.dn2和dn3分別創建鏈接
7.dn1,dn2,dn3分別返回鏈接是否創建成功文件名
8.client正式開始數據的傳輸到dn1,而後dn1-->dn2,dn2-->dn3
9.傳輸完成以後告知namenode,記錄文件名,大小,副本數量,分別記錄信息node
Namenode:存儲的元數據信息
namenode:(filename, numReplicas, block_ids)
元數據:hdfs的目錄結構以及每一個文件的block信息(id)shell
文件名,副本數量,blk的id 存在什麼地方:對應配置 {hadoop.tmp.dir}/name/....下面
checkpoint概念: secondaryNamenode扮演一個小弟的概念,由於NN上內存的樹形結構,因此每次操做文件都和內存發生IO很麻煩,因此會有一個fsimage鏡像,內存定時的把數據序列化到fsimage上去,同時有一個edit日誌記錄這個時間段內對數據進行的操做,這時候secondary namenode會把這個fsimage和edit日誌加載到secondary namenode下面,這時候secondary namenode進行反序列化,而且執行edit日誌中存儲的以前的操做,這時候就獲得了最原始的數據oop
Safemode:在start hdfs後的30秒,hdfs會檢查文件的完整性是否合格,在這個safemode期間,是不容許對文件系統進行操做的spa