一、命令行工具监控
命令行是最基础的监控方式,适合快速获取集群状态和排查问题。常用命令包括:
hdfs dfsadmin -report:展示集群整体概况,包括DataNode数量、总存储容量、可用空间、各DataNode的存储使用详情等,是日常巡检的核心命令。hdfs fsck /:检查HDFS文件系统的完整性,识别损坏的文件或数据块(需添加-delete参数可自动删除坏块,生产环境需谨慎使用)。hdfs dfsadmin -safemode get:查看NameNode是否处于安全模式(安全模式下无法写入数据,需关注其退出状态)。jps:检查Hadoop关键进程(NameNode、DataNode、Secondary NameNode)是否正常运行,若进程缺失需立即排查启动问题。二、Web界面监控
Hadoop自带Web界面提供直观的集群状态展示,无需额外工具:
http://<namenode-host>:50070访问,3.x版本通过http://<namenode-host>:9870访问。界面可查看集群健康状态、DataNode列表、存储使用率(总容量/已用空间/剩余空间)、文件系统块分布等基本信息。http://<resourcemanager-host>:8088访问,可查看HDFS相关的资源分配情况(如YARN容器使用率)及作业执行状态。三、第三方监控工具
第三方工具可实现自动化监控、告警及可视化,适合大规模集群:
hadoop-exporter(或JMX Exporter)采集HDFS指标(如磁盘使用率、读写延迟、DataNode心跳状态),Grafana配置 dashboard 实现数据可视化(如存储容量趋势图、读写吞吐量热力图),并支持设置阈值告警(如磁盘空间不足10%时发送邮件/短信)。check_hdfs)监控HDFS服务可用性(如NameNode是否响应、DataNode是否在线),触发告警时可执行预设脚本(如重启服务)。四、日志分析
Hadoop组件的日志是排查问题的关键依据,需启用日志聚合(将各节点日志收集到中央存储):
$HADOOP_HOME/logs/hadoop-*-namenode-*.log,DataNode日志位于$HADOOP_HOME/logs/hadoop-*-datanode-*.log。五、JMX监控
JMX(Java Management Extensions)可深入监控HDFS组件的内部状态,适合高级运维:
hdfs-site.xml中添加JMX端口配置(如NameNode的dfs.namenode.jmx-address设置为namenode-host:9870,DataNode的dfs.datanode.jmx-address设置为datanode-host:50075)。jconsole(图形化工具,内置JDK)、VisualVM(支持远程监控)或Prometheus JMX Exporter(将JMX指标转换为Prometheus可采集的格式)连接JMX端口,查看内存消耗(堆内存/非堆内存使用率)、线程数量(活跃线程数)、操作队列长度(待处理的RPC请求数)等指标。六、自定义监控脚本
通过脚本定期采集指标并触发告警,适合个性化需求:
hdfs dfsadmin -report命令,解析输出中的“Live DataNodes”数量(若数量减少可能意味着节点宕机),或“Used Percentage”(存储使用率,若超过90%需扩容)。将结果发送到监控系统(如Nagios)或直接触发告警(如邮件通知)。