DataNode(面試開發重點)
一、DataNode工作機制

(1)一個資料塊在DataNode上以檔案形式存儲在磁盤上,包括兩個檔案,一個是資料本身,一個是中繼資料包括資料塊的長度,塊資料的校驗和,以及時間戳。
(2)DataNode啟動後向NameNode注冊,通過後,周期性(1小時)的向NameNode上報所有的塊資訊。
(3)心跳是每3秒一次,心跳傳回結果帶有NameNode給該DataNode的指令如複制塊資料到另一台機器,或删除某個資料塊。如果超過10分鐘沒有收到某個DataNode的心跳,則認為該節點不可用。
(4)叢集運作中可以安全加入和退出一些機器。
二、資料完整性
思考:如果電腦磁盤裡面存儲的資料是控制高鐵信号燈的紅燈信号(1)和綠燈信号(0),但是存儲該資料的磁盤壞了,一直顯示是綠燈,是否很危險?同理DataNode節點上的資料損壞了,卻沒有發現,是否也很危險,那麼如何解決呢?
如下是DataNode節點保證資料完整性的方法。
(1)當DataNode讀取Block的時候,它會計算CheckSum。
(2)如果計算後的CheckSum,與Block建立時值不一樣,說明Block已經損壞。
(3)Client讀取其他DataNode上的Block。
(4)DataNode在其檔案建立後周期驗證CheckSum。
三、掉線時限參數設定
需要注意的是hdfs-site.xml 配置檔案中的heartbeat.recheck.interval的機關為毫秒,dfs.heartbeat.interval的機關為秒。
四、服役新資料節點
1)需求
随着公司業務的增長,資料量越來越大,原有的資料節點的容量已經不能滿足存儲資料的需求,需要在原有叢集基礎上動态添加新的資料節點。
2)環境準備
(1)在hadoop104主機上再克隆一台hadoop105主機
(2)修改IP位址和主機名稱
(3)删除原來HDFS檔案系統留存的檔案(/opt/module/hadoop-3.1.3/data和log)
(4)source一下配置檔案
3)服役新節點具體步驟
(1)直接啟動DataNode,即可關聯到叢集
(2)在hadoop105上上傳檔案
(3)如果資料不均衡,可以用指令實作叢集的再平衡
五、退役舊資料節點
1 添加白名單
添加到白名單的主機節點,都允許通路NameNode,不在白名單的主機節點,都會被退出。
配置白名單的具體步驟如下:
1)在NameNode的/opt/module/hadoop-3.1.3/etc/hadoop目錄下建立dfs.hosts檔案
添加如下主機名稱(不添加hadoop105)
2)在NameNode的hdfs-site.xml配置檔案中增加dfs.hosts屬性
3)配置檔案分發
4)重新整理NameNode
5)更新ResourceManager節點
6)在web浏覽器上檢視
7)如果資料不均衡,可以用指令實作叢集的再平衡
2 黑名單退役
在黑名單上面的主機都會被強制退出。
1)在NameNode的/opt/module/hadoop-3.1.3/etc/hadoop目錄下建立dfs.hosts.exclude檔案
添加如下主機名稱(要退役的節點)
hadoop105
2)在NameNode的hdfs-site.xml配置檔案中增加dfs.hosts.exclude屬性
3)重新整理NameNode、重新整理ResourceManager
4)檢查Web浏覽器,退役節點的狀态為decommission in progress(退役中),說明資料節點正在複制塊到其他節點
5)等待退役節點狀态為decommissioned(所有塊已經複制完成),停止該節點及節點資料總管。注意:如果副本數是3,服役的節點小于等于3,是不能退役成功的,需要修改副本數後才能退役
6)如果資料不均衡,可以用指令實作叢集的再平衡
注意:不允許白名單和黑名單中同時出現同一個主機名稱。
六、Datanode多目錄配置
1)DataNode也可以配置成多個目錄,每個目錄存儲的資料不一樣。即:資料不是副本
2)具體配置如下
hdfs-site.xml