在 CentOS 上监控 HDFS(Hadoop Distributed File System),一般从 Hadoop 自带工具、JMX、系统级监控、第三方监控平台 四个方面入手。下面按 由浅入深、生产可用 的方式给你一个完整方案。
hdfs dfsadmin -report
✅ 可看到:
hdfs fsck / -files -blocks -locations
✅ 检查:
jps
常见进程:
http://namenode-host:9870
可查看:
Hadoop 3.x 默认端口是 9870
Hadoop 2.x 通常是 50070
http://datanode-host:9864
Hadoop 原生支持 JMX(Java Management Extensions),这是最常用、最稳定的方式。
Hadoop 默认 JMX 端口:
netstat -plnt | grep java
或访问:
http://namenode:9870/jmx
| 指标 | 说明 |
|---|---|
Hadoop:service=NameNode,name=FSNamesystemState |
HDFS 状态 |
BlocksTotal |
总块数 |
UnderReplicatedBlocks |
副本不足块 |
MissingBlocks |
丢失块 |
CapacityUsed |
已用容量 |
| 指标 | 说明 |
|---|---|
Hadoop:service=DataNode,name=DataNodeActivity |
IO 活动 |
Remaining |
剩余空间 |
df -h
HDFS 最容易出问题的是:
iostat -x 1
关注:
%utilawaittop
htop
✅ 最推荐方案
Hadoop JMX → JMX Exporter → Prometheus → Grafana
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar
在 hadoop-env.sh 中:
export HADOOP_NAMENODE_OPTS="-javaagent:/path/jmx_prometheus_javaagent.jar=9100:/path/namenode.yml"
export HADOOP_DATANODE_OPTS="-javaagent:/path/jmx_prometheus_javaagent.jar=9101:/path/datanode.yml"
scrape_configs:
- job_name: "hdfs"
static_configs:
- targets:
- "namenode:9100"
- "datanode1:9101"
✅ 必须监控
✅ 告警建议
hdfs dfsadmin -report
检查:
hdfs fsck / -delete
| 场景 | 推荐方式 |
|---|---|
| 临时检查 | hdfs dfsadmin -report |
| 日常运维 | Web UI |
| 自动化监控 | JMX |
| 企业级 | Prometheus + Grafana |
如果你愿意,我可以:
只要告诉我你的 Hadoop 版本 + 是否 HA。