1. 利用Hadoop內置命令行工具監控
Hadoop自帶的命令行工具可直接獲取集群資源狀態,適用于快速排查問題。常用命令包括:
jps
:查看Java進程,確認Hadoop關鍵組件(NameNode、DataNode、ResourceManager、NodeManager等)是否運行;hdfs dfsadmin -report
:生成HDFS詳細狀態報告,包含集群總容量、已用空間、剩余空間及各DataNode狀態;yarn node -list
:列出YARN集群中所有NodeManager的狀態(如運行/停止);yarn application -list
:查看當前正在運行的YARN應用程序(如MapReduce、Spark作業)及資源占用情況(CPU、內存)。2. 通過Hadoop Web控制臺監控
Hadoop各組件提供可視化Web界面,直觀展示集群資源使用情況:
3. 使用第三方監控平臺
第三方工具提供更強大的集中式監控、可視化及告警功能,適合大規模集群:
4. 分析Hadoop日志文件
Hadoop組件的日志文件存儲在$HADOOP_HOME/logs
目錄下,包含詳細的運行信息和錯誤記錄,可通過以下方式監控:
tail -f
:實時追蹤日志內容(如tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
),查看實時運行狀態;grep
:搜索特定關鍵字(如“ERROR”“WARN”),快速定位異常(如grep "ERROR" $HADOOP_HOME/logs/*.log
)。5. 編寫自定義監控腳本
根據需求編寫Shell、Python等腳本,定期檢查系統資源(CPU、內存、磁盤)及Hadoop組件狀態,通過郵件、短信等方式發送告警。示例腳本(檢查NameNode狀態):
#!/bin/bash
namenode_status=$(curl -s http://<namenode-host>:9870/dfshealth.html | grep "Healthy")
if [[ "$namenode_status" == *"Healthy"* ]]; then
echo "NameNode is running normally."
else
echo "NameNode is down!" | mail -s "Hadoop NameNode Alert" admin@example.com
fi
6. 利用JMX進行性能監控
YARN等組件支持通過JMX(Java Management Extensions)接口采集性能指標,需在Hadoop配置文件(如yarn-site.xml
)中開啟JMX遠程訪問,設置端口(如yarn.nodemanager.jmx.port=9999
)及安全認證信息,再通過JConsole、VisualVM或Prometheus的JMX Exporter采集數據。