hdfs之DataNode

DataNode工作機制

在這裏插入圖片描述

  1. 一個數據塊在DataNode上以文件形式存儲在磁盤上,包括兩個文件,一個是數據本身,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳。
  2. DataNode啓動後向NameNode註冊,通過後,週期性(1小時)的向NameNode上報所有的塊信息。
  3. 心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令如複製塊數據到另一臺機器,或刪除某個數據塊。如果超過10分鐘沒有收到某個DataNode的心跳,則認爲該節點不可用。
  4. 集羣運行中可以安全加入和退出一些機器。

數據完整性

  1. 當DataNode讀取Block的時候,它會計算CheckSum。
  2. 如果計算後的CheckSum,與Block創建時值不一樣,說明Block已經損壞。
  3. Client讀取其他DataNode上的Block。
  4. 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,不在白名單的主機節點,都會被退出。

  1. 在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創建dfs.hosts文件
vi dfs.hosts

#然後把你機器的ip加上去,但是不要加上要下線的hadoop105機器
hadoop102
hadoop103
hadoop104
  1. 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts屬性
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts</value>
</property>
  1. 配置文件分發
xsync hdfs-site.xml
  1. 刷新NameNode
hdfs dfsadmin -refreshNodes
  1. 更新ResourceManager節點
yarn rmadmin -refreshNodes

17/06/24 14:17:11 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
  1. 如果數據不均衡,可以用命令實現集羣的再平衡
./start-balancer.sh

黑名單退役

在黑名單上面的主機都會被強制退出。

  1. 在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創建dfs.hosts.exclude文件
 vi dfs.hosts.exclude

添加如下主機名稱(要退役的節點)

hadoop105
  1. 在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>
  1. 刷新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
  1.  檢查Web瀏覽器,退役節點的狀態爲decommission in progress(退役中),說明數據節點正在複製塊到其他節點
    

在這裏插入圖片描述

  1. 等待退役節點狀態爲decommissioned(所有塊已經複製完成),停止該節點及節點資源管理器。注意:如果副本數是3,服役的節點小於等於3,是不能退役成功的,需要修改副本數後才能退役
    在這裏插入圖片描述
sbin/hadoop-daemon.sh 
sbin/yarn-daemon.sh stop 
  1. 如果數據不均衡,可以用命令實現集羣的再平衡

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章