Hadoop寫數(shù)據(jù)流程
1)客戶端通過Distributed FileSystem模塊向namenode請求上傳文件,namenode檢查目標文件是否已存在宿亡,父目錄是否存在。
2)namenode返回是否可以上傳纳令。
3)客戶端請求第一個 block上傳到哪幾個datanode服務器上挽荠。
4)namenode返回3個datanode節(jié)點,分別為dn1平绩、dn2圈匆、dn3。
5)客戶端通過FSDataOutputStream模塊請求dn1上傳數(shù)據(jù)捏雌,dn1收到請求會繼續(xù)調(diào)用dn2跃赚,然后dn2調(diào)用dn3,將這個通信管道建立完成性湿。
6)dn1来累、dn2、dn3逐級應答客戶端窘奏。
7)客戶端開始往dn1上傳第一個block(先從磁盤讀取數(shù)據(jù)放到一個本地內(nèi)存緩存),以packet為單位(大小為64k)葫录,dn1收到一個packet就會傳給dn2着裹,dn2傳給dn3;dn1每傳一個packet會放入一個應答隊列等待應答米同。
8)當一個block傳輸完成之后骇扇,客戶端再次請求namenode上傳第二個block的服務器。(重復執(zhí)行3-7步)面粮。
Hadoop讀數(shù)據(jù)流程
1)客戶端通過Distributed FileSystem向namenode請求下載文件少孝,namenode通過查詢元數(shù)據(jù),找到文件塊所在的datanode地址熬苍。
2)挑選一臺datanode(就近原則稍走,然后隨機)服務器,請求讀取數(shù)據(jù)柴底。
3)datanode開始傳輸數(shù)據(jù)給客戶端(從磁盤里面讀取數(shù)據(jù)輸入流婿脸,以packet為單位來做校驗,大小為64k)。
4)客戶端以packet為單位接收柄驻,先在本地緩存狐树,然后寫入目標文件。
Attention Please--文章來自互聯(lián)網(wǎng)資料整理鸿脓,如有雷同抑钟,純屬李小李抄襲涯曲,如有侵權(quán)請聯(lián)系刪除 From 李小李