點擊看《每日五分鐘搞定大數據》完整思惟導圖以及全部文章目錄node
1.配置exclude:bash
<name>dfs.hosts.exclude</name>
<value>/data/hadoop/excludes</value>
複製代碼
在/data/hadoop/excludes文件添加要退役的節點ip(可同時退役多個,一個一行)oop
2.配置完後刷新節點大數據
# $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes
複製代碼
3.查看各節點狀態spa
# $HADOOP_HOME/bin/hadoop dfsadmin -report
複製代碼
4.進度可在HDFS的50070可視化界面的Decommissioning處查看3d
Under replicated blocks : 有備份的blocks日誌
Blocks with no live replicas : 沒有存活備份的blocks(存備份的datanode下線了)code
Under Replicated Blocks In files under construction : 備份數不夠的blockscdn
5.另外有暴力的方式:blog
直接停datanode,hadoop的balance機制會自動將備份數不足3份(可配置)的blocks從新備份,注意這個方式只能夠一次停一臺機器,否則可能會出現missing blocks。
某個節點的datanode的blocks丟失,且沒有副本
查看blocks信息以及有問題的blocks:
hdfs fsck /
複製代碼
1)如果你中止了datanode且數據還沒丟失則重啓便可
2)數據丟失且其餘節點沒有副本則只能將這些blocks清理
hadoop fsck -move|-delete
複製代碼
3)出現這種狀況能夠嘗試hdfs dfs -get 下載有問題的文件,若報錯則只能用1)2)的方式解決,若能夠get下來將文件從新put上去也可解決問題。
當觸發NAMENODE的雙活切換(active-namenode給zk的心跳超時會發生) Datanode增量彙報該block-datanode映射給 namenode(切換後的active namenode)的時候,edit log還沒從JournalNode同步過來,這時在namenode中已經有了block-datanode映射(從剛纔datanode的report中來),可是尚未block-file映射(從edits文件裏面來),致使namenode認爲這個塊不屬於任何文件,定義爲該塊爲invalidate block。
這個在後臺日志能夠查到(後臺standby沒有徹底變成activenamenode以前,會出現包含 invalidate block 的後臺日誌。)
edits文件(包含block-file映射): 對於HDFS文件來講,包含的信息有修改時間、訪問時間、塊大小和組成一個文件塊信息等;而對於目錄來講,包含的信息主要有修改時間、訪問控制權限等信息
從新上報block信息
hdfs dfsadmin -triggerBlockReport datanode_ip:port
複製代碼
評論不能及時回覆可直接加公衆號提問或交流,知無不答,謝謝 。
![]()