Linux系统下Hadoop资源监控方法
Hadoop提供了一系列命令行工具,可直接获取集群资源状态:
jps:查看Hadoop关键进程(NameNode、DataNode、ResourceManager、NodeManager等)是否运行。若进程缺失,需排查启动脚本或日志。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的存储使用情况、连接状态。yarn node -list:列出YARN集群中所有NodeManager的状态(RUNNING/UNHEALTHY等)、HTTP地址及资源分配情况。yarn application -list:查看当前运行的YARN应用程序列表,包括应用ID、状态(RUNNING/FAILED/FINISHED)、提交用户、队列及资源使用情况。yarn top:实时显示集群各节点的CPU、内存利用率及各应用程序的资源占用排名。Hadoop各组件提供可视化Web界面,直观展示资源状态:
Hadoop组件日志默认存储在$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-<user>-namenode-<hostname>.log)。通过以下方式监控日志:
tail -f命令:实时查看日志尾部内容,例如tail -f $HADOOP_HOME/logs/hadoop-<user>-namenode-<hostname>.log,快速发现异常信息。grep命令:过滤关键错误信息,例如grep "OutOfMemoryError" $HADOOP_HOME/logs/*.log,定位内存溢出问题。编写Shell或Python脚本,结合Linux命令(如top、df、curl)定期检查Hadoop资源状态,并通过邮件或短信发送告警:
#!/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 "State")
# 发送告警(若状态异常)
if [[ "$namenode_status" != *"Healthy"* ]]; then
echo "NameNode is not healthy!" | mail -s "Hadoop Alert" admin@example.com
fi
if [[ "$resourcemanager_status" != *"RUNNING"* ]]; then
echo "ResourceManager is not running!" | mail -s "Hadoop Alert" admin@example.com
fi