Ubuntu环境下监控HDFS运行状态的常用方法
命令行工具是监控HDFS的基础手段,可直接获取集群状态、健康信息及故障块等关键数据:
hdfs dfsadmin -report,输出内容包括DataNode数量、集群总容量、已用空间、剩余空间及各DataNode的具体状态(如IP地址、存储使用率)。hdfs fsck / -files -blocks -locations,可检测文件系统完整性,报告损坏的文件、丢失的块或副本不足的块,并提供修复建议。hdfs dfs -df -h /,以易读格式(GB/MB)显示根目录的总容量、已用空间、剩余空间及使用百分比。hdfs dfs -du -s -h /path查看指定目录的总大小,或hdfs dfs -count -q /path查看目录的文件数量、目录数量及存储配额。jps,确认HDFS核心进程(NameNode、DataNode、SecondaryNameNode)及YARN进程(ResourceManager、NodeManager)是否正常运行。若进程未启动,需检查日志排查问题。Hadoop提供了直观的Web界面,可实时查看集群状态、资源使用情况及任务进度:
http://<namenode-host>:50070;http://<namenode-host>:9870(默认端口可能因配置调整,需以实际为准)。http://<resourcemanager-host>:8088,可监控YARN集群的资源使用情况(如CPU、内存分配)、运行中的应用程序列表、应用程序详情(如进度、资源占用)。第三方工具可实现更全面、自动化的监控与可视化,适合大规模集群:
prometheus.yml,添加HDFS监控目标(如NameNode的9870端口、DataNode的50075端口),示例如下:scrape_configs:
- job_name: 'hdfs'
static_configs:
- targets: ['namenode-host:9870', 'datanode1-host:50075', 'datanode2-host:50075']
启动Prometheus后,它将定期拉取HDFS的指标数据。$HADOOP_HOME/logs目录下(如namenode.log、datanode.log)。通过tail -f命令实时查看日志(如tail -f $HADOOP_HOME/logs/namenode.log),或使用ELK Stack(Elasticsearch+Logstash+Kibana)收集、索引日志,实现日志的集中存储、搜索与可视化,快速定位故障(如DataNode宕机、块丢失)。Hadoop组件(NameNode、DataNode)支持JMX(Java Management Extensions),可通过JMX客户端实时查看内部状态指标:
jconsole命令,选择要监控的Hadoop进程(如NameNode),在“MBeans”标签页中查看HDFS相关的指标(如“HDFS Storage”“NameNode Activity”“DataNode Blocks”),可监控块数量、读写操作次数、请求延迟等详细信息。