使用hdfs dfsadmin -report
命令獲取集群健康狀況,包括NameNode狀態、DataNode數量、各節點存儲容量使用率、副本數等關鍵信息。若DataNode數量為0或副本數低于配置值(如dfs.replication
默認3),需進一步排查節點連接或數據塊分布問題。
日志是故障定位的核心依據,路徑通常為$HADOOP_HOME/logs/
(如/usr/local/hadoop/logs/
)。
hadoop-<username>-namenode-<hostname>.log
,重點關注啟動錯誤(如元數據損壞)、RPC通信失?。ㄈ缍丝诒徽加茫?;hadoop-<username>-datanode-<hostname>.log
,常見錯誤包括磁盤空間不足(No space left on device
)、權限拒絕(Permission denied
)、網絡連接失?。?code>Connection refused)。tail -f
命令實時跟蹤日志,快速定位錯誤關鍵詞。HDFS核心配置文件($HADOOP_HOME/etc/hadoop/
)的錯誤會導致集群無法啟動或運行異常,需重點檢查:
fs.defaultFS
(NameNode RPC地址,如hdfs://localhost:9000
)是否正確;dfs.namenode.name.dir
(NameNode元數據存儲路徑)、dfs.datanode.data.dir
(DataNode數據存儲路徑)是否存在且具備讀寫權限;yarn.resourcemanager.hostname
(ResourceManager地址)是否配置正確。source ~/.bashrc
使環境變量生效。使用jps
命令檢查進程是否存在(應顯示NameNode
)。若未運行,查看NameNode日志定位原因:
not formatted
”,需格式化NameNode(注意:格式化會清除原有元數據,需提前備份):hdfs namenode -format
port already in use
”(如9000端口被占用),使用netstat -tuln | grep 9000
或ss -tuln | grep 9000
查找占用進程,終止后重啟NameNode:stop-dfs.sh && start-dfs.sh
若NameNode因數據塊副本不足(如dfs.replication
設置為3,但某文件僅有1個副本)進入安全模式,無法進行寫操作,可使用以下命令退出:
hdfs dfsadmin -safemode leave
若無法自動退出,需檢查DataNode是否正常運行(hdfs dfsadmin -report
),補充缺失的副本(hdfs dfs -setrep 3 /path/to/file
)。
使用jps
命令檢查DataNode進程是否存在。若未運行,執行hadoop-daemon.sh start datanode
啟動;若仍無法啟動,查看DataNode日志:
df -h
檢查dfs.datanode.data.dir
所在磁盤的可用空間(建議保留20%以上),清理舊數據或擴展存儲;hdfs:hadoop
),執行:chown -R hdfs:hadoop $HADOOP_HOME/data/datanode
chmod -R 755 $HADOOP_HOME/data/datanode
/etc/hosts
文件,確保集群節點IP與主機名映射正確(如192.168.1.100 master
、192.168.1.101 slave1
)。使用hdfs fsck
命令檢查文件系統一致性,定位損壞的數據塊:
hdfs fsck / -files -blocks -locations
若發現損壞塊,可嘗試自動修復(-move
將損壞塊移動到/lost+found
,-delete
刪除損壞塊):
hdfs fsck / -delete
若自動修復無效,需從其他DataNode的副本中恢復數據(hdfs dfs -cp /path/to/source /path/to/destination
)。
若HDFS無法啟動,需逐一排查以下常見原因:
netstat -tuln | grep <port>
(如9000、50070)檢查所需端口是否被占用,終止沖突進程;JAVA_HOME
(如export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
)、HADOOP_HOME
(如export HADOOP_HOME=/usr/local/hadoop
)已正確配置并生效;dfs.namenode.name.dir
、dfs.datanode.data.dir
)有讀寫權限,必要時使用sudo chown
修改所有權;fsimage
和edits
文件(位于dfs.namenode.name.dir
目錄下),或重新格式化NameNode。若數據寫入過程中出現錯誤(如DFSOutputStream
失?。?,需檢查:
hdfs dfsadmin -report
確認所有DataNode均處于“Live”狀態;dfs.replication
設置為3,但集群中只有2個DataNode,需增加DataNode數量或降低副本數(hdfs dfs -setrep 2 /path/to/file
);ping
、telnet
測試節點間網絡連通性,確保防火墻未阻止HDFS端口(如9000、50010);df -h
檢查DataNode存儲目錄的可用空間,確保有足夠空間接收數據。hdfs dfsadmin -allowSnapshot /path
允許目錄創建快照,再通過hdfs dfs -cp /path/.snapshot/snapshot_name /path/to/restore
恢復數據;hadoop distcp
命令跨集群備份數據(如hadoop distcp hdfs://master:9000/path hdfs://slave1:9000/backup
),或使用HDFS快照功能備份關鍵目錄。