温馨提示×

CentOS Hadoop 监控怎么做

小樊
48
2025-11-22 05:04:24
栏目: 智能运维

CentOS 上 Hadoop 监控落地方案

一 监控目标与关键指标

  • HDFS:集群容量与剩余空间、DataNode 数量与存活状态、块报告与缺失/损坏块、安全模式状态、NameNode/DataNode 进程存活。
  • YARN:集群资源使用(CPU/内存/容器)、NodeManager 与 ResourceManager 健康、队列与应用运行状态。
  • 系统层:节点 CPU、内存、磁盘 I/O、网络 等基础资源,Hadoop 进程存活(如 NameNode、DataNode、ResourceManager、NodeManager)。
  • 日志与告警:关键错误与慢操作日志、阈值告警(容量、延迟、失败任务数等)。

二 快速上手 内置工具与命令行

  • Web UI
    • NameNode UIHadoop 2.x 为 50070Hadoop 3.x 为 9870,查看存储、节点、块与操作信息。
    • ResourceManager UI8088,查看集群资源、队列与应用状态。
    • DataNode UI50075,查看数据节点详情与块信息。
  • 命令行巡检
    • 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 展示。
  • 部署步骤
    1. 安装与启动 Prometheus/Grafana(可用系统包管理器或官方二进制包)。
    2. 在每个 Hadoop 节点部署 JMX Exporter,为 NameNode/DataNode/ResourceManager/NodeManager 配置 JVM 启动参数,暴露 JMX 端口。
    3. 配置 prometheus.yml 抓取目标,例如:
      • job_name: ‘hadoop-jmx’ static_configs:
        • targets: [‘nn-host:9999’,‘dn-host:9999’,‘rm-host:9999’,‘nm-host:9999’]
    4. Grafana 添加 Prometheus 数据源,导入 Hadoop 相关 Dashboard(社区有现成面板,可按需调整)。
    5. 配置告警规则(如 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/GrafanaZabbix 做持续监控与告警。
    • 容量、节点存活、关键作业失败 配置分级告警,避免告警风暴。
    • Hadoop 2.x 与 3.x 区分 NameNode UI 端口(50070/9870),避免访问错误。
    • 定期校验 HDFS 块健康(fsck)数据均衡(balancer),与监控指标联动治理。

0