一、Hadoop在Linux上的监控方法
hdfs dfsadmin -report查看HDFS集群状态(DataNode数量、容量、可用空间);yarn node -list列出YARN集群节点及状态;yarn application -list查看正在运行的应用程序;jps确认关键组件(NameNode、DataNode、ResourceManager、NodeManager)是否运行。http://namenode-host:9870(Hadoop 3.x)提供集群状态、存储使用等可视化信息;ResourceManager通过http://resourcemanager-host:8088展示资源分配、任务进度等。yarn-site.xml)开启JMX远程访问,设置端口(如1099)及安全认证,采集YARN组件的性能指标(如内存使用、任务队列长度)。top/htop查看CPU、内存占用;iostat监控磁盘I/O(如读写速率、IOPS);netstat/ss查看网络连接状态(如端口监听、连接数);vmstat分析虚拟内存使用(如swap交换次数)。df -h检查磁盘空间,若剩余空间小于10%则触发报警。二、Hadoop在Linux上的日志分析
$HADOOP_LOG_DIR(通常为/var/log/hadoop-hdfs/、/var/log/hadoop-yarn/),记录组件启动、运行、停止等关键事件。yarn logs -applicationId <appId>命令获取,记录任务执行过程中的详细信息(如Map/Reduce任务进度、错误堆栈)。hdfs-site.xml中配置dfs.audit.logger参数(如org.apache.hadoop.hdfs.server.namenode.FSNamesystem.auditLog),用于安全审计与合规性检查。grep 'ERROR' hadoop-hdfs-datanode-*.log提取NameNode日志中的ERROR信息;awk '/2023-10-05 14:30:00/,/2023-10-05 15:00:00/' namenode.log结合时间戳定位特定时段的日志。[Full GC (System.gc()) ...]),分析任务延迟原因;比对DataNode心跳超时记录(hadoop-hdfs-datanode-*.log中的BlockReport延迟),判断节点是否故障。raw_logs.filter(~col("value").contains("INFO") & (col("value").contains("ERROR") | col("value").contains("WARN"))),将清洗后的日志存储为Parquet格式,提高后续分析效率。hadoop_gc_time_ratio(GC时间占比),当该值超过0.2(20%)且持续5分钟时,触发HighGCPressure告警,提醒运维人员检查JVM内存配置。/var/log/hadoop/*.log。创建关键指标面板,如ERROR日志计数(每分钟)、DataNode心跳丢失趋势(每小时丢失数量)、文件系统操作延迟分布(P99延迟),直观展示集群运行状态。grep 'Shuffle phase' taskexecutor.log | awk '{print $NF}'),计算Shuffle耗时的均值与标准差(awk '{sum+=$1; sumsq+=$1*$1} END {print "Mean:",sum/NR; print "StdDev:",sqrt(sumsq/NR - (sum/NR)^2)}'),若标准差过大(如超过均值2倍),说明存在数据倾斜,需调整分区策略(如增加Partition数量)。grep 'DiskBalancer' datanode.log | awk '{print $NF}'),生成IO延迟热力图(使用Matplotlib),定位高负载磁盘。当单盘吞吐量超过80MB/s时,建议扩容磁盘或迁移数据。grep 'Remote node' nodemanager.log | awk '{print $NF}' | sort | uniq -c),统计跨机房通信占比(如40%)。通过调整HDFS副本策略(如将副本放置在同城节点),减少跨机房网络流量,降低网络费用。