Hadoop提供了多组内置命令,可直接获取集群各组件的实时状态:
jps:查看Java进程,确认Hadoop关键组件(如NameNode、DataNode、ResourceManager、NodeManager)是否运行。若进程未启动,需手动启动对应服务。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的存储状态(如是否存活、块数量)。yarn node -list:列出YARN集群中所有NodeManager的状态(如运行、停止),以及节点的资源分配情况(CPU、内存)。yarn application -list:查看当前正在运行的YARN应用程序(如MapReduce、Spark作业),包括应用ID、名称、状态(运行中/已完成)、提交用户等信息。hdfs haadmin -getServiceState <nn-name>(HA集群):检查NameNode的高可用状态(Active/Standby),确保主备节点切换正常。Hadoop各组件提供可视化Web界面,方便直观监控集群状态:
http://<namenode-host>:端口。界面包含集群健康状况、HDFS块报告、DataNode列表、NameNode日志链接等。http://<resourcemanager-host>:8088。可查看集群资源使用情况(CPU、内存)、正在运行的应用程序列表、队列状态等。http://<datanode-host>:端口。可查看DataNode的存储使用情况、心跳状态等。对于大规模集群,建议使用专业监控工具实现自动化、可视化监控:
Hadoop组件的日志文件集中存储在$HADOOP_HOME/logs目录下,通过日志分析可定位故障原因:
hadoop-*-namenode-*.loghadoop-*-datanode-*.logyarn-*-resourcemanager-*.logyarn-*-nodemanager-*.logtail -f命令实时查看日志(如tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log),或用grep命令过滤异常信息(如grep -i "error" $HADOOP_HOME/logs/*.log)。通过编写Shell/Python脚本,定期检查Hadoop集群状态并发送警报:
#!/bin/bash
# 检查NameNode状态
namenode_status=$(curl -s http://<namenode-host>:9870/dfshealth.html | grep "Healthy")
if [[ -z "$namenode_status" ]]; then
echo "NameNode is not healthy!" | mail -s "Hadoop Alert" admin@example.com
fi
# 检查DataNode数量
datanode_count=$(hdfs dfsadmin -report | grep "Live datanodes" | awk '{print $3}')
if [ "$datanode_count" -lt 3 ]; then
echo "Warning: Only $datanode_count DataNodes are live!" | mail -s "Hadoop Alert" admin@example.com
fi
crontab每5分钟运行一次)。