HDFS于Ubuntu上的监控方法
命令行是Ubuntu环境下最基础的监控方式,无需额外安装工具,适合日常快速检查:
hdfs dfsadmin -report:获取HDFS集群整体状态报告,包括DataNode数量、总容量、剩余空间、副本数等关键信息。hdfs fsck /:检查HDFS文件系统健康状况,报告损坏的文件或块(可添加-files -blocks -locations参数查看详细信息)。hdfs dfs -df -h /:查看HDFS根目录的磁盘使用情况(人类可读格式),包括总容量、已用空间、剩余空间。hdfs dfs -count -v /:统计指定目录下的文件数量、目录数量及数据块数量(-v参数显示详细信息)。jps:查看Ubuntu系统中运行的Hadoop相关进程(如NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager),确认服务是否正常启动。Hadoop自带Web界面,通过浏览器即可直观查看HDFS及集群状态:
http://<namenode-host>:9870(Hadoop 2.x及以上版本),可查看HDFS集群概览、DataNode列表、文件系统存储使用情况、命名空间信息等。http://<resourcemanager-host>:8088,用于监控YARN资源管理器的资源分配情况(如CPU、内存)、正在运行的作业及历史作业记录。第三方工具可实现更专业的监控(如告警、可视化、历史数据存储),适合生产环境:
Hadoop Exporter(如hadoop-prometheus-exporter)采集HDFS的JMX指标(如NameNode的RPC调用次数、DataNode的磁盘使用率)。若需要特定的监控逻辑(如定时发送告警、自定义指标判断),可编写Shell或Python脚本:
#!/bin/bash
STATUS=$(jps | grep NameNode | wc -l)
if [ $STATUS -eq 0 ]; then
echo "NameNode is down!" | mail -s "HDFS Alert" admin@example.com
else
echo "NameNode is running."
fi
将脚本保存为check_namenode.sh,添加执行权限(chmod +x check_namenode.sh),并通过cron定时任务(如每5分钟执行一次)实现自动化监控。$HADOOP_HOME/logs/hadoop-*-namenode-*.log),提取错误关键词(如“ERROR”“Exception”),触发告警。HDFS的NameNode和DataNode会生成详细的日志文件,位于$HADOOP_HOME/logs目录下(如hadoop-*-namenode-*.log、hadoop-*-datanode-*.log)。通过tail、grep等命令可实时查看或分析日志:
tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.loggrep -i "error" $HADOOP_HOME/logs/hadoop-*-datanode-*.log
日志中包含节点状态变化、数据块复制异常、磁盘空间不足等信息,是排查HDFS问题的关键依据。