HDFS于Ubuntu上的監控方法
命令行是Ubuntu環境下最基礎的監控方式,無需額外安裝工具,適合日??焖贆z查:
hdfs dfsadmin -report:獲取HDFS集群整體狀態報告,包括DataNode數量、總容量、剩余空間、副本數等關鍵信息。hdfs fsck /:檢查HDFS文件系統健康狀況,報告損壞的文件或塊(可添加-files -blocks -locations參數查看詳細信息)。hdfs dfs -df -h /:查看HDFS根目錄的磁盤使用情況(人類可讀格式),包括總容量、已用空間、剩余空間。hdfs dfs -count -v /:統計指定目錄下的文件數量、目錄數量及數據塊數量(-v參數顯示詳細信息)。jps:查看Ubuntu系統中運行的Hadoop相關進程(如NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager),確認服務是否正常啟動。Hadoop自帶Web界面,通過瀏覽器即可直觀查看HDFS及集群狀態:
http://<namenode-host>:9870(Hadoop 2.x及以上版本),可查看HDFS集群概覽、DataNode列表、文件系統存儲使用情況、命名空間信息等。http://<resourcemanager-host>:8088,用于監控YARN資源管理器的資源分配情況(如CPU、內存)、正在運行的作業及歷史作業記錄。第三方工具可實現更專業的監控(如告警、可視化、歷史數據存儲),適合生產環境:
Hadoop Exporter(如hadoop-prometheus-exporter)采集HDFS的JMX指標(如NameNode的RPC調用次數、DataNode的磁盤使用率)。若需要特定的監控邏輯(如定時發送告警、自定義指標判斷),可編寫Shell或Python腳本:
#!/bin/bash
STATUS=$(jps | grep NameNode | wc -l)
if [ $STATUS -eq 0 ]; then
echo "NameNode is down!" | mail -s "HDFS Alert" admin@example.com
else
echo "NameNode is running."
fi
將腳本保存為check_namenode.sh,添加執行權限(chmod +x check_namenode.sh),并通過cron定時任務(如每5分鐘執行一次)實現自動化監控。$HADOOP_HOME/logs/hadoop-*-namenode-*.log),提取錯誤關鍵詞(如“ERROR”“Exception”),觸發告警。HDFS的NameNode和DataNode會生成詳細的日志文件,位于$HADOOP_HOME/logs目錄下(如hadoop-*-namenode-*.log、hadoop-*-datanode-*.log)。通過tail、grep等命令可實時查看或分析日志:
tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.loggrep -i "error" $HADOOP_HOME/logs/hadoop-*-datanode-*.log
日志中包含節點狀態變化、數據塊復制異常、磁盤空間不足等信息,是排查HDFS問題的關鍵依據。