1. 利用Hadoop自带命令行工具
Hadoop提供了多组命令行工具,可直接获取集群组件的运行状态:
jps:查看Java进程,确认Hadoop关键组件(如NameNode、DataNode、ResourceManager、NodeManager)是否正在运行。若进程未启动,需手动启动对应服务。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的连接状态(如存活/死亡)。yarn node -list:列出YARN集群中所有NodeManager的地址、状态(如RUNNING/UNHEALTHY)及资源分配情况(CPU、内存)。yarn application -list:查看当前正在运行的YARN应用程序(如MapReduce、Spark作业),包括应用ID、名称、状态(如RUNNING/FINISHED/FAILED)及资源使用量。hdfs fsck /:检测HDFS文件系统健康度,识别损坏的文件或数据块(需管理员权限)。2. 访问Hadoop Web UI界面
Hadoop各组件提供可视化Web界面,直观展示集群状态:
3. 采用第三方监控工具
第三方工具可实现更全面的集群监控与告警:
4. 分析Hadoop日志文件
Hadoop组件的日志文件存储在$HADOOP_HOME/logs目录下,包含运行过程中的详细信息(如错误堆栈、警告信息):
NameNode.log(NameNode运行日志)、DataNode.log(DataNode运行日志)、ResourceManager.log(ResourceManager运行日志)、NodeManager.log(NodeManager运行日志)。tail -f命令实时追踪日志(如tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log),使用grep命令搜索特定关键字(如grep "ERROR" $HADOOP_HOME/logs/*.log)或错误信息(如grep "Exception" $HADOOP_HOME/logs/*.log)。5. 编写自定义监控脚本
通过脚本自动化监控集群状态,并实现告警通知:
#!/bin/bash
# 获取NameNode状态
namenode_status=$(curl -s http://<namenode-host>:50070/dfshealth.html | grep "Healthy")
# 获取ResourceManager状态
resourcemanager_status=$(curl -s http://<resourcemanager-host>:8088/cluster | grep "RUNNING")
# 发送告警(若状态异常)
if [[ -z "$namenode_status" ]]; then
echo "NameNode is not healthy!" | mail -s "Hadoop NameNode Alert" admin@example.com
fi
if [[ -z "$resourcemanager_status" ]]; then
echo "ResourceManager is not running!" | mail -s "Hadoop ResourceManager Alert" admin@example.com
fi
df -h)、内存使用率(free -m)、CPU负载(top)等系统指标,结合Hadoop集群状态进行综合判断。6. 利用系统自带工具辅助监控
Linux系统自带工具可监控Hadoop集群的基础资源使用情况:
top/htop:查看系统CPU、内存使用率及进程列表,识别占用资源过高的进程(如YARN NodeManager占用过多内存)。iostat:监控系统I/O统计信息(如磁盘读写速率、I/O等待时间),判断磁盘是否成为瓶颈。netstat/ss:查看网络连接状态(如端口监听、连接数),确认Hadoop组件间的网络通信是否正常(如NameNode与DataNode之间的RPC连接)。