日志是故障排查的核心依據,Hadoop的日志默認存放在$HADOOP_HOME/logs
目錄下(如NameNode日志為hadoop-*-namenode-*.log
)??墒褂靡韵旅羁焖俣ㄎ诲e誤:
tail -f $HADOOP_HOME/logs/*.log
grep "ERROR" $HADOOP_HOME/logs/*.log
tail -f $HADOOP_HOME/logs/hadoop-*-datanode-*.log
使用jps
命令列出所有Java進程,確認Hadoop關鍵組件(NameNode、DataNode、ResourceManager、NodeManager)是否正常運行:
NameNode
、DataNode
、ResourceManager
、NodeManager
(根據集群角色可能略有差異)。hadoop-*-datanode-*.log
)Hadoop集群依賴節點間的網絡通信,需確保:
ping <目標IP>
(如ping 192.168.1.101
)。netstat -tulnp | grep <端口號>
(如NameNode默認端口50070);iptables -I INPUT -p tcp --dport <端口號> -j ACCEPT
(或關閉防火墻:service iptables stop
,生產環境建議配置規則而非直接關閉)Hadoop的核心配置文件需在所有節點保持一致,常見文件及檢查要點:
core-site.xml
:確認fs.defaultFS
(NameNode地址,如hdfs://namenode:9000
)配置正確;hdfs-site.xml
:檢查dfs.namenode.name.dir
(NameNode元數據存儲路徑)、dfs.datanode.data.dir
(DataNode數據存儲路徑)是否存在且權限正確(建議設置為755
,屬主為Hadoop用戶);yarn-site.xml
:確認yarn.resourcemanager.hostname
(ResourceManager地址)、yarn.nodemanager.aux-services
(如mapreduce_shuffle
)配置正確;mapred-site.xml
:檢查mapreduce.framework.name
(設為yarn
)使用工具監控系統資源使用情況,識別性能瓶頸:
top
(查看CPU占用率高的進程)、vmstat 1 5
(查看CPU、內存、IO的實時狀態);free -m
(查看內存使用量,確保剩余內存足夠)、vmstat 1 5
(查看swap使用情況,避免頻繁交換);df -h
(查看磁盤空間,確保/
、/tmp
等分區有足夠空間)、iostat -x 1 5
(查看磁盤IO負載,如%util
接近100%需優化)clusterID
不一致(NameNode與DataNode的VERSION
文件中clusterID
需相同)、端口被占用。hadoop namenode -format
,注意:會清除元數據,需提前備份);檢查VERSION
文件中的clusterID
并修改一致。dfs.datanode.data.dir
路徑不存在或權限不足、與NameNode的clusterID
不一致、殘留臨時文件。mkdir -p /path/to/data && chown -R hadoop:hadoop /path/to/data
);刪除/tmp
下的Hadoop臨時文件(如/tmp/hadoop-*
);同步clusterID
。yarn-site.xml
配置錯誤(如yarn.resourcemanager.hostname
未設置)、端口被占用。lsof -i:<端口號>
查找并殺死占用進程。yarn.nodemanager.resource.memory-mb
設為節點內存的80%)、優化數據存儲位置(hdfs dfs -put
時指定-D dfs.datanode.use.datanode.hostname=true
)、修改目錄權限(hdfs dfs -chmod -R 777 /tmp
,生產環境建議細化權限)若上述步驟無法解決問題,可嘗試重啟服務(注意:重啟前確保數據已保存):
$HADOOP_HOME/sbin/stop-all.sh
(停止所有Hadoop服務);$HADOOP_HOME/sbin/start-all.sh
(啟動所有Hadoop服務);jps
(查看進程是否啟動)、hdfs dfsadmin -report
(查看HDFS節點狀態)、yarn node -list
(查看YARN節點狀態)若問題由Hadoop版本bug引起(如已知的功能缺陷或性能問題),可考慮: