Hadoop在Linux上的监控方法
Hadoop提供了多组命令行工具,用于快速获取集群组件状态和资源使用情况:
jps:查看Java进程,确认Hadoop关键组件(如NameNode、DataNode、ResourceManager、NodeManager)是否运行。例如,jps会显示类似NameNode、ResourceManager的进程名,若进程不存在则可能存在启动问题。hdfs dfsadmin -report:生成HDFS详细状态报告,包含集群总容量、已用空间、剩余空间及各DataNode的存储状态(如容量、剩余空间、最后心跳时间)。yarn node -list:列出YARN集群中所有NodeManager的状态(如运行/停止),以及节点的HTTP地址、资源分配情况。yarn application -list:显示当前正在运行的YARN应用程序(如MapReduce、Spark作业),包括应用ID、名称、用户、状态(RUNNING/FINISHED/FAILED)。mapred job -list(Hadoop 2.x及以下):查看MapReduce作业列表,包括作业ID、名称、状态、提交用户等信息。Hadoop各组件提供可视化Web界面,直观展示集群运行状态:
针对大规模集群或需要高级功能的场景,可选择专业监控工具:
Hadoop组件的日志文件存储在$HADOOP_HOME/logs目录下,包含详细的运行信息和错误记录:
NameNode.log(NameNode运行日志)、DataNode.log(DataNode运行日志)、ResourceManager.log(ResourceManager运行日志)、NodeManager.log(NodeManager运行日志)、yarn-*.log(YARN应用程序日志)。tail -f log文件名实时追踪日志输出(如tail -f /opt/hadoop/logs/namenode.log);grep "ERROR" log文件名搜索错误关键字(如grep "ERROR" /opt/hadoop/logs/yarn-resourcemanager.log),快速定位故障原因。Linux系统工具可用于监控Hadoop集群的基础资源使用情况:
top/htop:查看系统整体资源使用情况(CPU占用率、内存使用量、进程优先级),htop比top更直观,支持鼠标操作。iostat:监控系统I/O设备负载情况(如磁盘读写速率、I/O等待时间),帮助判断HDFS是否存在磁盘瓶颈(如iostat -x 1每秒刷新一次磁盘I/O数据)。netstat/ss:查看网络连接状态(如端口监听、TCP连接数),排查网络问题(如netstat -tulnp | grep 9870查看NameNode Web UI端口是否监听)。通过编写脚本实现个性化监控,满足特定需求:
jps、hdfs dfsadmin -report、yarn node -list等命令,检查组件状态(如NameNode是否运行)、资源使用情况(如HDFS剩余空间是否低于阈值)。mail命令发送邮件:echo "NameNode is down!" | mail -s "Hadoop Alert" admin@example.com。#!/bin/bash namenode_status=$(jps | grep NameNode) if [ -z "$namenode_status" ]; then echo "NameNode is not running!" | mail -s "Hadoop NameNode Alert" admin@example.com else echo "NameNode is running." fi ```。