在 Ubuntu 上监控 HDFS 的可落地方案
一 监控目标与总体架构
- 监控对象与关键指标
- HDFS 健康与容量:总容量、已用、剩余、DataNode 数量、块报告是否一致。
- 存储与数据完整性:坏块数、缺失块数、复制不足块数、文件/目录数量。
- 服务可用性:NameNode、DataNode 进程存活,Web UI 可达。
- 作业与资源:通过 YARN 观察应用状态、队列使用、资源利用率。
- 建议架构
- 内置 Web UI 做即时观测(NameNode、ResourceManager)。
- 命令行与脚本做轻量巡检与阈值告警。
- Prometheus + Grafana 做指标时序与可视化告警(可选 JMX Exporter)。
- Zabbix/Nagios 做主机与服务可用性监控(可选)。
二 内置方式与命令行巡检
- 进程与服务状态
- 使用 jps 检查 NameNode/DataNode 是否存活:
jps | egrep 'NameNode|DataNode'
- HDFS 概览与容量
hdfs dfsadmin -report:查看 DataNode 数量、容量、剩余空间、块报告 等,用于容量与节点健康巡检。
- 文件系统健康
hdfs fsck /:检查 坏块、缺失块、复制不足 等,用于数据完整性验证。
- YARN 作业与资源
yarn application -list、yarn application -status <AppID>、yarn application -kill <AppID>:用于作业状态观测与干预。
- 快速可用性探测脚本示例
三 Web UI 与 REST API 观测
- Web UI 入口
- NameNode UI:Hadoop 2.x 默认 50070,3.x 默认 9870;查看 集群健康、DataNode 列表、容量使用、日志 等。
- ResourceManager UI:默认 8088;查看 YARN 应用、队列、资源使用 等。
- REST API 获取指标
- ResourceManager REST API:
http://<rm-host>:8088/ws/v1/cluster/apps 获取应用列表与状态,可用 curl/Python 拉取并解析 JSON,做自定义监控与告警。
- WebHDFS:通过 HTTP 执行文件/目录操作与健康探测,适合轻量集成与外部系统调用。
四 基于 Prometheus 的指标监控与可视化
- 采集方式
- JMX Exporter:在 NameNode/DataNode 上以 Java Agent 方式暴露 JMX 指标,由 Prometheus 拉取;适合细粒度指标(JVM、RPC、块、复制等)。
- Hadoop Metrics:配置 Metrics2 将指标输出到 Prometheus(通过 Sink 插件),减少侵入性。
- 可视化与告警
- Grafana 导入 HDFS 官方/社区仪表盘,展示 容量、坏块、复制不足、DataNode 心跳、RPC 延迟 等。
- Prometheus Alertmanager 配置阈值告警(如 MissingBlocks > 0、Remaining < 阈值、NN RPC 延迟过高)。
五 第三方平台与运维建议
- 平台选择
- Apache Ambari:一站式 部署/监控/告警,适合多组件统一管理。
- Zabbix/Nagios:主机与服务可用性监控,结合脚本/插件覆盖 进程存活、端口连通、HTTP 状态。
- Ganglia:面向集群的可扩展监控,常与 Grafana 组合做可视化。
- Datadog:商业平台,提供 HDFS 集成 与可视化。
- 运维要点
- 日志聚合:开启 日志聚合,便于集中检索 NameNode/DataNode 错误与慢操作。
- 容量与副本策略:关注 剩余容量 与 复制不足块,结合业务调整 dfs.replication 与 dfs.blocksize。
- 小文件治理:减少 小文件 以降低 NameNode 压力,必要时做合并归档。
- 网络与磁盘:保障 节点间带宽 与 磁盘健康,避免因 磁盘满/坏盘 导致数据不可用。