DataNode工作機制
- 一個數據塊在DataNode上以文件形式存儲在磁盤上,包括兩個文件,一個是數據本身,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳。
- DataNode啓動後向NameNode註冊,通過後,週期性(1小時)的向NameNode上報所有的塊信息。
- 心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令如複製塊數據到另一臺機器,或刪除某個數據塊。如果超過10分鐘沒有收到某個DataNode的心跳,則認爲該節點不可用。
- 集羣運行中可以安全加入和退出一些機器。
數據完整性
- 當DataNode讀取Block的時候,它會計算CheckSum。
- 如果計算後的CheckSum,與Block創建時值不一樣,說明Block已經損壞。
- Client讀取其他DataNode上的Block。
- DataNode在其文件創建後周期驗證CheckSum
掉線時限參數設置
datenode宕機不會立即下線,有一個等待時長
我們可以手動修改hadoop的配置值去修改這個時間
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
新加節點
直接啓動DataNode,即可關聯到集羣
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start nodemanager
如果數據不均衡,可以用命令實現集羣的再平衡
./start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.2/logs/hadoop-atguigu-balancer-hadoop102.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
下掉節點
注意:不允許白名單和黑名單中同時出現同一個主機名稱。
添加白名單
添加到白名單的主機節點,都允許訪問NameNode,不在白名單的主機節點,都會被退出。
- 在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創建dfs.hosts文件
vi dfs.hosts
#然後把你機器的ip加上去,但是不要加上要下線的hadoop105機器
hadoop102
hadoop103
hadoop104
- 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts屬性
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts</value>
</property>
- 配置文件分發
xsync hdfs-site.xml
- 刷新NameNode
hdfs dfsadmin -refreshNodes
- 更新ResourceManager節點
yarn rmadmin -refreshNodes
17/06/24 14:17:11 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
- 如果數據不均衡,可以用命令實現集羣的再平衡
./start-balancer.sh
黑名單退役
在黑名單上面的主機都會被強制退出。
- 在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創建dfs.hosts.exclude文件
vi dfs.hosts.exclude
添加如下主機名稱(要退役的節點)
hadoop105
- 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude屬性
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude</value>
</property>
- 刷新NameNode、刷新ResourceManager
hdfs dfsadmin -refreshNodes
出現
Refresh nodes successful
yarn rmadmin -refreshNodes
出現
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
-
檢查Web瀏覽器,退役節點的狀態爲decommission in progress(退役中),說明數據節點正在複製塊到其他節點
- 等待退役節點狀態爲decommissioned(所有塊已經複製完成),停止該節點及節點資源管理器。注意:如果副本數是3,服役的節點小於等於3,是不能退役成功的,需要修改副本數後才能退役
sbin/hadoop-daemon.sh
sbin/yarn-daemon.sh stop
- 如果數據不均衡,可以用命令實現集羣的再平衡
Datanode多目錄配置
DataNode也可以配置成多個目錄,每個目錄存儲的數據不一樣。即:數據不是副本
具體配置如下
hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>