如何监控Ubuntu上的Hadoop集群
监控Ubuntu上的Hadoop集群需结合自带工具、第三方系统及自定义方案,覆盖集群状态、资源使用、作业执行等全维度指标,以下是具体方法:
Hadoop提供了一系列命令行工具,可直接在终端执行,无需额外安装:
jps:列出所有Java进程,快速确认Hadoop核心组件(NameNode、DataNode、ResourceManager、NodeManager等)是否运行。例如,若看到NameNode和DataNode进程,则HDFS正常启动。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的磁盘使用、数据块数量等信息,帮助判断存储资源是否均衡。yarn node -list:列出YARN集群中所有NodeManager的状态(RUNNING/UNHEALTHY),以及节点的HTTP地址,用于排查节点失联问题。Hadoop各组件提供Web界面,直观展示集群运行状态:
Zabbix通过JMX接口收集Hadoop的性能指标,适合企业级大规模集群:
hadoop-env.sh中添加以下参数,启用JMX并设置端口(如9999):export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<your_hostname>"
zabbix-java-gateway,并在zabbix_java_gateway.conf中配置JMX连接端口(如10052)。Prometheus负责收集指标,Grafana负责数据可视化,适合需要自定义仪表盘的场景:
jmx_prometheus_javaagent,配置hadoop.yml文件(指定JMX端口及采集指标),并将agent添加到Hadoop启动命令中(如-javaagent:/path/to/jmx_prometheus_javaagent.jar=12345:/path/to/hadoop.yml)。prometheus.yml中添加Hadoop监控目标(如NameNode、ResourceManager的JMX Exporter端口),启动Prometheus即可自动采集指标。Nagios通过插件实时监控Hadoop组件状态,适合需要及时告警的场景:
sudo apt-get install nagios3),配置Web访问权限。nagios-hadoop-plugin),放置在/usr/lib/nagios/plugins/目录下,并赋予执行权限(chmod +x)。hadoop_node),并定义服务监控项(如check_hadoop.sh脚本,检查NameNode是否存活、ResourceManager是否有运行作业)。通过Shell脚本调用Hadoop命令行工具,定期检查集群状态并输出结果(如邮件、短信通知):
#!/bin/bash
# 检查NameNode状态
namenode_status=$(curl -s http://<namenode-host>:50070/dfshealth.html | grep "Healthy")
# 检查ResourceManager状态
resourcemanager_status=$(curl -s http://<resourcemanager-host>:8088/cluster | grep "State")
echo "NameNode Status: $namenode_status"
echo "ResourceManager State: $resourcemanager_status"
将脚本设置为定时任务(如crontab -e添加*/5 * * * * /path/to/script.sh),每5分钟执行一次。
监控Hadoop集群的关键指标,提前预警性能瓶颈: