温馨提示×

如何监控 Ubuntu 上的 Hadoop

小樊
35
2025-11-09 05:55:12
栏目: 智能运维

如何监控Ubuntu上的Hadoop集群

监控Ubuntu上的Hadoop集群需结合自带工具第三方系统自定义方案,覆盖集群状态、资源使用、作业执行等全维度指标,以下是具体方法:

一、Hadoop自带监控工具

1. 命令行工具:快速获取集群状态

Hadoop提供了一系列命令行工具,可直接在终端执行,无需额外安装:

  • jps:列出所有Java进程,快速确认Hadoop核心组件(NameNode、DataNode、ResourceManager、NodeManager等)是否运行。例如,若看到NameNodeDataNode进程,则HDFS正常启动。
  • hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的磁盘使用、数据块数量等信息,帮助判断存储资源是否均衡。
  • yarn node -list:列出YARN集群中所有NodeManager的状态(RUNNING/UNHEALTHY),以及节点的HTTP地址,用于排查节点失联问题。

2. Web UI界面:可视化监控集群

Hadoop各组件提供Web界面,直观展示集群运行状态:

  • NameNode Web UI:默认端口9870(Hadoop 3.x),可查看HDFS的文件系统树、数据块分布、NameNode内存使用及DataNode列表。
  • ResourceManager Web UI:默认端口8088,可查看集群总资源(CPU、内存)、各NodeManager的状态、正在运行的应用程序(如MapReduce、Spark)及调度队列使用情况。
  • NodeManager Web UI:默认端口8042,可查看该节点上运行的容器列表、资源使用率(CPU、内存)及本地目录健康状态。

二、第三方监控工具

1. Zabbix:基于JMX的深度监控

Zabbix通过JMX接口收集Hadoop的性能指标,适合企业级大规模集群:

  • 配置Hadoop JMX:在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:在Ubuntu上安装zabbix-java-gateway,并在zabbix_java_gateway.conf中配置JMX连接端口(如10052)。
  • 导入模板与监控:从Zabbix模板库下载Hadoop监控模板,导入后添加Hadoop主机,关联Gateway并配置JMX监控项(如NameNode内存使用、DataNode磁盘剩余空间)。

2. Prometheus + Grafana:实时监控与可视化

Prometheus负责收集指标,Grafana负责数据可视化,适合需要自定义仪表盘的场景:

  • 启用JMX Exporter:下载jmx_prometheus_javaagent,配置hadoop.yml文件(指定JMX端口及采集指标),并将agent添加到Hadoop启动命令中(如-javaagent:/path/to/jmx_prometheus_javaagent.jar=12345:/path/to/hadoop.yml)。
  • 配置Prometheus:在prometheus.yml中添加Hadoop监控目标(如NameNode、ResourceManager的JMX Exporter端口),启动Prometheus即可自动采集指标。
  • 创建Grafana仪表盘:导入Hadoop监控模板(如Grafana社区提供的Hadoop模板),展示关键指标(如NameNode状态、ResourceManager运行作业数、NodeManager CPU使用率)。

3. Nagios:告警驱动的监控

Nagios通过插件实时监控Hadoop组件状态,适合需要及时告警的场景:

  • 安装Nagios:在Ubuntu上安装Nagios Core(如sudo apt-get install nagios3),配置Web访问权限。
  • 添加Hadoop监控插件:下载Hadoop监控插件(如nagios-hadoop-plugin),放置在/usr/lib/nagios/plugins/目录下,并赋予执行权限(chmod +x)。
  • 配置主机与服务:在Nagios配置文件中添加Hadoop主机(如hadoop_node),并定义服务监控项(如check_hadoop.sh脚本,检查NameNode是否存活、ResourceManager是否有运行作业)。

三、自定义监控方案

1. 编写Shell脚本:自动化状态检查

通过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分钟执行一次。

2. 关键指标监控:聚焦核心资源

监控Hadoop集群的关键指标,提前预警性能瓶颈:

  • NameNode:状态(Healthy/Unhealthy)、内存使用(避免OOM)、文件系统操作次数(如读/写请求数)。
  • DataNode:状态(Live/Dead)、磁盘使用(剩余空间<20%时告警)、数据块数量(避免数据倾斜)。
  • ResourceManager:运行作业数(Pending作业过多需扩容)、资源分配(如YARN容器内存上限)。
  • NodeManager:CPU使用率(避免过载)、内存使用率(避免OOM)、容器状态(Running/Failed)。

0