在 Ubuntu 上监控 Hadoop 性能的可落地方案
一 监控体系总览
- 建议采用“内置 Web UI + 命令行巡检 + 指标采集可视化 + 日志告警”的组合:
- 内置 Web UI:快速查看组件健康与作业状态(如 NameNode 50070、ResourceManager 8088)。
- 命令行工具:日常巡检与临时排查(如 hdfs dfsadmin -report、yarn node -list -all、yarn application -list、mapred job -list)。
- 指标采集与可视化:用 Prometheus + Grafana 或 Zabbix(JMX) 做长期趋势与告警。
- 日志与系统层:分析 HADOOP_HOME/logs 并结合 Nagios/Ganglia 做节点可用性监控。
二 快速巡检与内置 Web UI
- Web UI 入口(默认端口,若已自定义以实际为准):
- HDFS NameNode:http://:50070
- YARN ResourceManager:http://:8088
- 常用命令(在集群任一节点执行,按需在对应服务节点运行):
- 查看 HDFS 整体与 DataNode 概况:hdfs dfsadmin -report
- 查看 YARN 节点与资源:yarn node -list -all
- 查看运行中的 YARN 应用:yarn application -list
- 查看 MapReduce 作业:mapred job -list
- 日志定位:组件日志位于 $HADOOP_HOME/logs,可用 tail -f 实时查看,或用 grep 检索异常关键字。
三 指标采集与可视化
- Prometheus + Grafana(推荐)
- 部署 Prometheus 与 Grafana(Ubuntu 可用包管理器安装 Grafana,Prometheus 可下载官方发布包解压即用)。
- 配置 Hadoop Metrics2:编辑 $HADOOP_HOME/etc/hadoop/hadoop-metrics2.properties,启用 PrometheusSink(示例:.sink.prometheus.class=org.apache.hadoop.metrics2.sink.prometheus.PrometheusSink),使各组件暴露 /metrics 端点供 Prometheus 抓取。
- Grafana 添加 Prometheus 数据源并导入 Hadoop 相关 Dashboard,完成可视化与告警规则配置。
- Zabbix + JMX(适合已有 Zabbix 体系)
- 在 Hadoop 环境变量中开启 JMX(示例:hadoop-env.sh 增加 HADOOP_JMX_OPTS,如 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Djava.rmi.server.hostname=;生产环境请开启认证与 SSL)。
- 部署 Zabbix Java Gateway,在 Zabbix 前端创建主机并关联 JMX 接口与模板,导入 Hadoop JMX 模板后完成监控与告警。
四 常用监控指标与告警阈值建议
- 建议重点关注的指标与阈值示例(按“指标—含义—阈值建议”组织):
- HDFS 容量与副本健康:Capacity Used %、Missing Blocks、Corrupt Blocks;阈值:容量使用率持续 >80% 告警,出现 Missing/Corrupt 立即处理。
- NameNode 线程与 GC:NameNode RPC handler threads、GC 次数/停顿;阈值:处理线程长期打满或 Full GC 频繁需扩容或调优。
- DataNode 健康:DataNode 存活数、磁盘使用率;阈值:存活数少于预期或单盘 >85% 告警。
- YARN 资源与队列:Memory Used %、VCores Used %、Pending Containers、Queue Capacity;阈值:资源使用率 >80% 或 Pending 持续升高需扩容或重排队。
- 作业性能:Map/Reduce 进度、失败/重试次数、Shuffle 耗时;阈值:失败率升高、Shuffle 耗时异常需定位数据倾斜/网络瓶颈。
五 快速落地步骤清单
- 明确工具栈:小规模或需要“开箱即用”选 Ambari;已有监控平台选 Zabbix(JMX);追求灵活可视化与告警选 Prometheus + Grafana。
- 打通指标采集:
- JMX 路线:在 hadoop-env.sh 配置 HADOOP_JMX_OPTS 并开放端口,部署 Zabbix Java Gateway,前端导入模板。
- Metrics2/Prometheus 路线:编辑 hadoop-metrics2.properties 启用 PrometheusSink,部署 Prometheus 抓取 /metrics,在 Grafana 配置面板与告警。
- 建立巡检与告警基线:
- 固化日报/周报:执行 hdfs dfsadmin -report、yarn node -list -all、yarn application -list 等命令,结合 Grafana 趋势图与 Zabbix 阈值告警。
- 日志与事件:集中采集 $HADOOP_HOME/logs,对 ERROR/WARN 关键字设置告警。