1. 使用Hadoop自带监控工具
Hadoop提供了基础的命令行工具和Web界面,适合快速查看集群状态:
jps:列出所有Java进程,确认NameNode、DataNode、ResourceManager、NodeManager等核心组件是否运行(如缺失则表示进程崩溃)。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的存储状态(如磁盘剩余空间低于阈值会标记为警告)。yarn node -list:列出YARN集群中所有NodeManager的ID、状态(RUNNING/UNHEALTHY)及资源使用情况(如内存、CPU占用)。yarn application -list:查看当前运行的MapReduce/Spark等作业列表,包括作业ID、状态(ACCEPTED/RUNNING/FINISHED)、提交时间及资源分配。2. 采用第三方监控工具
对于大规模集群,第三方工具能提供更全面的监控与可视化:
3. 编写自定义监控脚本
通过脚本定期采集指标并输出到日志或监控系统,实现个性化监控:
#!/bin/bash
# 获取NameNode状态
namenode_status=$(curl -s http://<namenode-host>:50070/dfshealth.html | grep "Healthy")
echo "$(date) - NameNode Status: ${namenode_status:-UNHEALTHY}" >> /var/log/hadoop_monitor.log
# 获取ResourceManager状态
resourcemanager_status=$(curl -s http://<resourcemanager-host>:8088/cluster | grep "State")
echo "$(date) - ResourceManager State: ${resourcemanager_status:-UNKNOWN}" >> /var/log/hadoop_monitor.log
脚本可通过cron定时执行(如每5分钟运行一次),并将日志上传至ELK Stack(Elasticsearch+Logstash+Kibana)进行集中存储与分析。4. 配置告警与通知
及时获取集群异常信息,避免问题扩大:
hadoop-env.sh中添加-Dcom.sun.management.jmxremote参数,开启JMX远程监控,允许Prometheus等工具采集指标。yarn_node_manager_status{state="UNHEALTHY"} > 0),当指标触发规则时,通过Alertmanager发送邮件、短信或Slack通知。