温馨提示×

linux hdfs配置如何监控

小樊
47
2026-09-04 16:09:40
栏目: 智能运维

在 Linux 环境下对 HDFS(Hadoop Distributed File System) 进行监控,通常可以从 原生工具、Web UI、命令行、日志、第三方监控系统 等多个层面来做。下面按“从简单到专业”的方式给你梳理一套实用方案。


一、HDFS 自带监控方式(最基础)

1. HDFS Web UI(最常用)

Hadoop 自带 Web 监控页面:

  • NameNode

    http://namenode-host:9870
    

    (Hadoop 3.x,老版本是 50070)

  • DataNode

    http://datanode-host:9864
    

可查看:

  • HDFS 容量、已用/剩余空间
  • DataNode 状态
  • 副本状态
  • 文件系统健康状况

2. HDFS 命令行监控

常用命令:

# 查看整体状态
hdfs dfsadmin -report

# 查看安全模式
hdfs dfsadmin -safemode get

# 检查文件系统
hdfs fsck /

# 查看容量
hdfs dfs -df -h /

3. JMX(Java 监控接口)

HDFS 各组件都暴露 JMX:

http://namenode:9870/jmx

可获取:

  • 内存
  • RPC 延迟
  • Block 数量
  • 读写请求数

二、系统级监控(Linux 层面)

1. 基础资源监控

top
iostat -x 1
df -h
netstat -tnp | grep java

重点看:

  • CPU / 内存
  • 磁盘 IO
  • 网络吞吐

2. HDFS 进程监控

jps

常见进程:

  • NameNode
  • DataNode
  • SecondaryNameNode

可配合 systemdsupervisor 做自动重启。


三、日志监控(非常重要)

1. 日志位置

一般在:

$HADOOP_HOME/logs/

关键日志:

  • hadoop-*-namenode-*.log
  • hadoop-*-datanode-*.log

2. 常见监控方式

  • tail -f
  • grep ERROR
  • 接入 ELK / Loki

四、自动化 & 告警(生产推荐)

方案 1:Prometheus + Grafana(最主流)

组件

  • JMX Exporter
  • Node Exporter
  • Prometheus
  • Grafana

架构

HDFS (JMX) → JMX Exporter → Prometheus → Grafana
Linux Host → Node Exporter → Prometheus

监控指标示例

  • HDFS 容量使用率
  • 缺失块数量
  • NameNode RPC 延迟
  • DataNode 掉线
  • 安全模式状态

方案 2:Zabbix

  • 使用 Zabbix agent
  • 自定义脚本调用 hdfs dfsadmin -report
  • 触发告警(磁盘满、DN 掉线)

方案 3:企业级方案

  • Ambari(HDP)
  • Cloudera Manager(CDH)
  • 自带完整 HDFS 监控和告警

五、常见监控指标(建议重点关注)

指标 说明
Capacity Used % 防止写满
Under-Replicated Blocks 副本不足
Missing Blocks 数据风险
Dead DataNodes 节点故障
RPC Queue Time 性能瓶颈
GC Time NameNode 稳定性

六、简单监控脚本示例

#!/bin/bash
USED=$(hdfs dfs -df / | awk 'NR==2 {print $4}' | sed 's/%//')
if [ "$USED" -gt 85 ]; then
  echo "HDFS usage high: $USED%" | mail -s "HDFS Alert" admin@x.com
fi

七、总结建议

  • 学习/测试:Web UI + 命令行
  • 生产环境:Prometheus + Grafana + 日志告警
  • 企业集群:Cloudera / Ambari

如果你愿意,我可以:

  • 给你一份 Prometheus + HDFS 配置示例
  • 或针对 CDH / HDP / 原生 Hadoop 给具体方案

0