1. 程式人生 > >大資料筆記 2--hdfs讀資料流程

大資料筆記 2--hdfs讀資料流程

在這裡插入圖片描述

注:以下簡化名稱所對應的全稱: NN == NameNode; IO == hdfsFileinputStream; DN == DataNode; DN1 == DataNode1; DN2 == DataNode2; DN3 == DataNode3;

詳細流程: 1、客戶端向NN傳送一個帶有相關檔案的路徑請求,例如hdfs://input/xx.txt這樣的一個讀檔案請求;

2、NN會在元資料中查詢叢集中是否有相關檔案的記錄,如果有NN會將這些資料所在的(正常工作)節點返回給客戶端,也就是所謂的元資料。(假設該檔案的三個block分別存放在三個節點上(block1:DN1;block2:DN2;block3:DN3 )

)

3、客戶端請求DN1傳輸第一個block塊資料;

4、DN1應答請求開始傳輸第一個block塊資料;

5、客戶端請求DN2傳輸第二個block塊資料;

6、DN2應答請求開始傳輸第二個block塊資料;

7、客戶端請求DN3傳輸第三個block塊資料;

8、DN3應答請求開始傳輸第三個block塊資料;

9、傳輸過來的block塊會在客戶端記憶體中順序合併成檔案,如果記憶體無法放下所有block塊,客戶端會合並一部分寫入磁碟後再進行下一部分的合併,直到合併完成後hdfs的讀資料流程結束。