Hadoop系列008 HDFS的資料流

2022-09-02 14:39:14 字數 2331 閱讀 7885

1.1 剖析檔案寫入

1)客戶端向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。

2)namenode返回是否可以上傳。

3)客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。

4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。

5)客戶端請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成

6)dn1、dn2、dn3逐級應答客戶端

7)客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答

8)當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器。(重複執行3-7步)

1.2 網路拓撲概念

在本地網路中,兩個節點被稱為「彼此近鄰」是什麼意思?在海量資料處理中,其主要限制因素是節點之間資料的傳輸速率——頻寬很稀缺。這裡的想法是將兩個節點間的頻寬作為距離的衡量標準。

節點距離:兩個節點到達最近的共同祖先的距離總和。

例如,假設有資料中心d1機架r1中的節點n1。該節點可以表示為/d1/r1/n1。利用這種標記,這裡給出四種距離描述。

distance(/d1/r1/n1, /d1/r1/n1)=0(同一節點上的程序)

distance(/d1/r1/n1, /d1/r1/n2)=2(同一機架上的不同節點)

distance(/d1/r1/n1, /d1/r3/n2)=4(同一資料中心不同機架上的節點)

distance(/d1/r1/n1, /d2/r4/n2)=6(不同資料中心的節點)

1.3 機架感知(副本節點擊擇)

1.3.1 官方位址

1.3.2 低版本hadoop複本節點擊擇

1.3.3 hadoop2.7.2副本節點擊擇

1.3.4 自定義機架感知

// 傳遞的是客戶端的ip列表,返回機架感知的路徑列表

public listresolve(listnames) else if (name.startswith("192"))

// 定義機架

if (ip < 104) else

}}

// 把ip位址列印出來

try

fos.close();

} catch (exception e)

return lists;

} } }}

(2)配置core-site.xml

(3)分發core-site.xml

xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
(4)編譯程式,打成jar,分發到所有節點的hadoop的classpath下

cd /opt/module/hadoop-2.7.2/share/hadoop/common/lib
(5)重新啟動集群

(6)在名稱節點hadoop103主機上檢視名稱

(7)檢視結果

2)挑選一台datanode(就近原則,然後隨機)伺服器,請求讀取資料。

3)datanode開始傳輸資料給客戶端(從磁碟裡面讀取資料放入流,以packet為單位來做校驗)。

4)客戶端以packet為單位接收,先在本地快取,然後寫入目標檔案。

3.1 debug除錯如下**

@test

public void writefile() throws exception

3.2 總結

Hadoop系列008 HDFS的資料流

1.1 剖析檔案寫入 1 客戶端向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。2 namenode返回是否可以上傳。3 客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。4 namenode返回3個datanode節點,分別為dn1 dn2 ...

Hadoop系列一HDFS簡介

namenode nn namenode的metadata資訊在啟動後會載入到記憶體中,metadata資訊儲存在磁碟檔案fsimage,edits檔案記錄對metadata的操作日誌,block位置資訊只存在記憶體,不儲存到fsimage。secondarynamenode snn 不是nn的備份...

hadoop系列三 HDFS操作

0 檢視hdfs中的目錄資訊 hadoop fs ls hdfs路徑 1 上傳檔案到hdfs中 hadoop fs put 本地檔案 aaa hadoop fs copyfromlocal 本地檔案 hdfs路徑 copyfromlocal等價於 put hadoop fs movefromloca...