1. 利用Hadoop原生工具监控
Hadoop自带命令行工具与Web界面,是最基础的监控方式,适合快速获取集群状态。
hdfs dfsadmin -report:获取集群整体概况,包括DataNode数量、存储容量(总容量/已用/剩余)、块数量等核心指标;hdfs fsck /:检查HDFS文件系统健康状况,识别丢失或损坏的数据块(需替换/为目标路径);hdfs dfsadmin -safemode get:确认NameNode是否处于安全模式(安全模式下无法写入数据);yarn node -list:查看YARN节点状态(HDFS依赖YARN进行资源调度)。http://<namenode-host>:9870访问,可查看集群健康状态、DataNode列表、块分布、命名空间信息等;http://<resourcemanager-host>:8088访问,监控YARN资源分配(如CPU、内存)、任务进度及队列状态。2. 日志分析与故障排查
HDFS组件的日志文件记录了详细的运行信息,是排查问题的关键依据。
$HADOOP_HOME/logs目录下,主要包括:
hadoop-*-namenode-*.log):记录NameNode启动、块管理、客户端请求等信息;hadoop-*-datanode-*.log):记录数据块上传/下载、存储状态等;yarn-*-resourcemanager-*.log、yarn-*-nodemanager-*.log):记录资源调度与任务执行情况。grep、awk等命令过滤关键信息(如“ERROR”“WARN”关键字);3. 第三方监控工具集成
第三方工具提供更全面的监控与告警功能,适合大规模集群或需要可视化的场景。
hdfs_exporter(HDFS专用指标采集器)收集HDFS指标(如磁盘使用率、DataNode心跳、块数量);check_hdfs等插件监控HDFS状态(如NameNode是否存活、DataNode是否在线、磁盘空间是否充足);4. JMX接口实时监控
Hadoop组件(NameNode、DataNode)通过JMX(Java Management Extensions)暴露内部指标,适合实时查看运行状态。
hdfs-site.xml,添加JMX地址配置(如dfs.namenode.jmx-address设置为<namenode-host>:9870,dfs.datanode.jmx-address设置为<datanode-host>:50075);jconsole(JDK自带)或VisualVM等JMX客户端,连接到对应端口,查看MBean指标(如NameNode的“BlockPoolUsedSpace”“LiveNodes”,DataNode的“StorageUsed”“LastUpdate”)。5. 自定义脚本监控
通过编写脚本实现个性化监控,适合特定需求(如定期检查DataNode数量、发送自定义告警)。
#!/bin/bash
# 检查DataNode数量
datanode_count=$(hdfs dfsadmin -report | grep "Number of DataNodes" | awk '{print $NF}')
echo "Current DataNode count: $datanode_count"
# 检查NameNode状态
namenode_status=$(hdfs dfsadmin -report | grep "NameNode" | grep -o "active\|standby")
echo "NameNode status: $namenode_status"
# 发送告警(示例:若DataNode数量小于3,输出告警信息)
if [ "$datanode_count" -lt 3 ]; then
echo "WARNING: DataNode count is less than 3!" | mail -s "HDFS DataNode Alert" admin@example.com
fi
crontab -e添加定时任务(如每5分钟执行一次脚本):*/5 * * * * /path/to/hdfs_monitor.sh >> /var/log/hdfs_monitor.log 2>&1