1. 利用Hadoop内置命令行工具监控
Hadoop自带的命令行工具可直接获取集群资源状态,适用于快速排查问题。常用命令包括:
jps
:查看Java进程,确认Hadoop关键组件(NameNode、DataNode、ResourceManager、NodeManager等)是否运行;hdfs dfsadmin -report
:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode状态;yarn node -list
:列出YARN集群中所有NodeManager的状态(如运行/停止);yarn application -list
:查看当前正在运行的YARN应用程序(如MapReduce、Spark作业)及资源占用情况(CPU、内存)。2. 通过Hadoop Web控制台监控
Hadoop各组件提供可视化Web界面,直观展示集群资源使用情况:
3. 使用第三方监控平台
第三方工具提供更强大的集中式监控、可视化及告警功能,适合大规模集群:
4. 分析Hadoop日志文件
Hadoop组件的日志文件存储在$HADOOP_HOME/logs
目录下,包含详细的运行信息和错误记录,可通过以下方式监控:
tail -f
:实时追踪日志内容(如tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
),查看实时运行状态;grep
:搜索特定关键字(如“ERROR”“WARN”),快速定位异常(如grep "ERROR" $HADOOP_HOME/logs/*.log
)。5. 编写自定义监控脚本
根据需求编写Shell、Python等脚本,定期检查系统资源(CPU、内存、磁盘)及Hadoop组件状态,通过邮件、短信等方式发送告警。示例脚本(检查NameNode状态):
#!/bin/bash namenode_status=$(curl -s http://<namenode-host>:9870/dfshealth.html | grep "Healthy") if [[ "$namenode_status" == *"Healthy"* ]]; then echo "NameNode is running normally." else echo "NameNode is down!" | mail -s "Hadoop NameNode Alert" admin@example.com fi
6. 利用JMX进行性能监控
YARN等组件支持通过JMX(Java Management Extensions)接口采集性能指标,需在Hadoop配置文件(如yarn-site.xml
)中开启JMX远程访问,设置端口(如yarn.nodemanager.jmx.port=9999
)及安全认证信息,再通过JConsole、VisualVM或Prometheus的JMX Exporter采集数据。