Linux系统下Hadoop监控管理方法
jps
:查看Hadoop关键进程(NameNode、DataNode、ResourceManager、NodeManager等)是否运行;hdfs dfsadmin -report
:生成HDFS详细状态报告(集群容量、DataNode健康状态、块分布等);yarn node -list
:列出YARN集群中所有NodeManager的状态;yarn application -list
:查看当前运行的YARN应用程序(如MapReduce、Spark作业);yarn logs -applicationId <ID>
:获取指定应用程序的日志信息。http://<namenode-host>:9870
(Hadoop 3.x,默认端口)或http://<namenode-host>:50070
(Hadoop 2.x),展示HDFS存储使用、DataNode列表、健康状态等;http://<resourcemanager-host>:8088
,查看YARN资源分配、运行中的应用程序、节点状态等。$HADOOP_HOME/logs
目录下(如NameNode日志为hadoop-<user>-namenode-<hostname>.log
,YARN ResourceManager日志为yarn-<user>-resourcemanager-<hostname>.log
)。tail -f <log-file>
实时追踪日志输出(如tail -f /opt/hadoop/logs/hadoop-root-namenode-localhost.log
);使用grep
过滤关键信息(如grep "ERROR" /opt/hadoop/logs/*.log
查找错误日志)。hdfs dfsadmin -report
获取DataNode状态、yarn node -list
获取节点列表),并将结果写入日志文件或发送告警(如通过邮件、企业微信)。#!/bin/bash
namenode_status=$(curl -s http://<namenode-host>:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeStatus")
if echo "$namenode_status" | grep -q '"State" : "active"'; then
echo "NameNode is active" >> /var/log/hadoop_monitor.log
else
echo "NameNode is not active" | mail -s "Hadoop Alert: NameNode Down" admin@example.com
fi
该脚本可设置cron定时任务(如每5分钟执行一次),实现自动化监控。hadoop-env.sh
)中设置JMX远程访问参数(如export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
),开启NameNode/DataNode的JMX远程监控。