CentOS 上 Hadoop 监控落地方案
一 监控目标与关键指标
- HDFS:集群容量与剩余空间、DataNode 数量与存活状态、块报告与缺失/损坏块、安全模式状态、NameNode/DataNode 进程存活。
- YARN:集群资源使用(CPU/内存/容器)、NodeManager 与 ResourceManager 健康、队列与应用运行状态。
- 系统层:节点 CPU、内存、磁盘 I/O、网络 等基础资源,Hadoop 进程存活(如 NameNode、DataNode、ResourceManager、NodeManager)。
- 日志与告警:关键错误与慢操作日志、阈值告警(容量、延迟、失败任务数等)。
二 快速上手 内置工具与命令行
- Web UI
- NameNode UI:Hadoop 2.x 为 50070,Hadoop 3.x 为 9870,查看存储、节点、块与操作信息。
- ResourceManager UI:8088,查看集群资源、队列与应用状态。
- DataNode UI:50075,查看数据节点详情与块信息。
- 命令行巡检
- hdfs dfsadmin -report:容量、DataNode 数量、剩余空间等。
- hdfs dfsadmin -safemode get:检查是否处于安全模式。
- hdfs fsck /:检查文件系统完整性与损坏块。
- yarn node -list:查看 YARN 节点状态。
- jps:确认各 Hadoop 进程是否在运行。
- 日志与 JMX
- 日志路径通常为 /var/log/hadoop/,用于故障定位与性能分析。
- 通过 JMX 结合 jconsole/VisualVM 实时查看组件指标与 MBean。以上方法适合快速巡检与临时排障,长期建议叠加可视化与告警平台。
三 推荐方案 Prometheus Grafana
- 组件与思路
- 以 Prometheus 采集时间序列指标,Grafana 做可视化与告警面板;Hadoop 侧通过 JMX Exporter 暴露指标,Prometheus 拉取并存储,Grafana 展示。
- 部署步骤
- 安装与启动 Prometheus/Grafana(可用系统包管理器或官方二进制包)。
- 在每个 Hadoop 节点部署 JMX Exporter,为 NameNode/DataNode/ResourceManager/NodeManager 配置 JVM 启动参数,暴露 JMX 端口。
- 配置 prometheus.yml 抓取目标,例如:
- job_name: ‘hadoop-jmx’
static_configs:
- targets: [‘nn-host:9999’,‘dn-host:9999’,‘rm-host:9999’,‘nm-host:9999’]
- 在 Grafana 添加 Prometheus 数据源,导入 Hadoop 相关 Dashboard(社区有现成面板,可按需调整)。
- 配置告警规则(如 HDFS 容量阈值、节点宕机、YARN 应用失败 等),接入邮件/企业微信/钉钉等通知渠道。
- 适用场景
- 需要灵活查询(PromQL)、强大可视化与可扩展告警的团队;适合 中小到大型 集群。
四 企业常用替代方案
- Zabbix
- 在节点部署 Zabbix Agent,通过自定义脚本或 JMX 采集 Hadoop 指标;在 Server 端配置监控项、触发器与告警媒介,适合已有 Zabbix 体系的团队。
- Ganglia
- 安装 gmond/gmetad,配置 gmond.conf/gmetad.conf 指定监控目标与集群名;在 Hadoop 侧配置 hadoop-metrics2.properties 输出到 Ganglia,适合 大规模 HPC 风格 集群。
- Ambari / Cloudera Manager
- 一体化管理与监控,内置 HDFS/YARN 健康面板、指标与告警,适合 CDH/HDP 发行版或需要强运维集成的场景。
- Nagios / Datadog
- Nagios 通过插件/脚本做可用性与服务检查;Datadog 为商业化 SaaS,开箱即用、可视化强,适合 快速上云与托管 需求。
五 落地配置与告警示例
- 最小可用巡检脚本
- 容量与安全模式
- hdfs dfsadmin -report | egrep ‘Configured Capacity|DFS Used|DFS Remaining|Live datanodes’
- hdfs dfsadmin -safemode get
- 健康与块
- hdfs fsck / -files -blocks -locations
- YARN 节点与应用
- yarn node -list
- yarn application -list -appStates ALL
- 进程存活
- jps | egrep ‘NameNode|DataNode|ResourceManager|NodeManager’
- Prometheus 告警规则示例
- HDFS 容量告急
- groups:
- name: hdfs
rules:
- alert: HDFSCapacityLow
expr: 1 - (hdfs_fs_capacity_free / hdfs_fs_capacity_total) > 0.80
for: 5m
labels: severity=warning
annotations:
summary: “HDFS 容量使用超过 80% (instance {{ $labels.instance }})”
- DataNode 宕机
-
- alert: DataNodeDown
expr: up{job=“hadoop-jmx”, component=“datanode”} == 0
for: 2m
labels: severity=critical
annotations:
summary: “DataNode {{ $labels.instance }} 已下线”
- 实施建议
- 先打通 Web UI + 命令行 + 日志 的基础可观测性,再引入 Prometheus/Grafana 或 Zabbix 做持续监控与告警。
- 为 容量、节点存活、关键作业失败 配置分级告警,避免告警风暴。
- 按 Hadoop 2.x 与 3.x 区分 NameNode UI 端口(50070/9870),避免访问错误。
- 定期校验 HDFS 块健康(fsck) 与 数据均衡(balancer),与监控指标联动治理。