在 Linux 环境下对 HDFS(Hadoop Distributed File System) 进行监控,通常可以从 原生工具、Web UI、命令行、日志、第三方监控系统 等多个层面来做。下面按“从简单到专业”的方式给你梳理一套实用方案。
Hadoop 自带 Web 监控页面:
NameNode
http://namenode-host:9870
(Hadoop 3.x,老版本是 50070)
DataNode
http://datanode-host:9864
可查看:
常用命令:
# 查看整体状态
hdfs dfsadmin -report
# 查看安全模式
hdfs dfsadmin -safemode get
# 检查文件系统
hdfs fsck /
# 查看容量
hdfs dfs -df -h /
HDFS 各组件都暴露 JMX:
http://namenode:9870/jmx
可获取:
top
iostat -x 1
df -h
netstat -tnp | grep java
重点看:
jps
常见进程:
可配合 systemd 或 supervisor 做自动重启。
一般在:
$HADOOP_HOME/logs/
关键日志:
hadoop-*-namenode-*.loghadoop-*-datanode-*.logtail -fgrep ERRORHDFS (JMX) → JMX Exporter → Prometheus → Grafana
Linux Host → Node Exporter → Prometheus
hdfs dfsadmin -report| 指标 | 说明 |
|---|---|
| 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
如果你愿意,我可以: