1. 使用Hadoop自带监控工具
Hadoop提供了基础的命令行和Web界面工具,适合快速查看集群状态:
jps:列出所有Java进程,确认NameNode、DataNode、ResourceManager、NodeManager等核心组件是否运行(如缺失则表示进程崩溃)。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的心跳状态(如DataNode未上报心跳可能意味着网络或节点故障)。yarn node -list:查看YARN集群中所有NodeManager的列表及状态(如“RUNNING”表示正常,“UNHEALTHY”表示节点异常)。yarn application -list:列出当前集群中正在运行的作业,包括作业ID、用户、状态(如“RUNNING”“FINISHED”“FAILED”)。2. 采用第三方监控工具
第三方工具提供更全面的可视化、告警及历史数据分析能力:
3. 编写自定义监控脚本
若需要特定的监控逻辑(如定期检查HDFS副本数、YARN任务失败率),可编写Shell或Python脚本:
curl获取NameNode状态,判断是否健康:#!/bin/bash
namenode_status=$(curl -s http://<namenode-host>:50070/dfshealth.html | grep "Healthy")
if [[ -n "$namenode_status" ]]; then
echo "NameNode is healthy"
else
echo "NameNode is unhealthy" | mail -s "Hadoop Alert" admin@example.com
fi
subprocess模块调用yarn application -list,统计失败作业数量:import subprocess
result = subprocess.run(["yarn", "application -list"], capture_output=True, text=True)
failed_apps = [line for line in result.stdout.splitlines() if "FAILED" in line]
if len(failed_apps) > 0:
print(f"Failed applications: {len(failed_apps)}")
crontab -e添加*/5 * * * * /path/to/script.sh),定期执行并将结果输出到日志文件或发送告警。4. 关键监控指标建议
无论使用哪种方法,都应关注以下核心指标,以确保Hadoop集群的稳定运行: