Hadoop日志默认存储在**$HADOOP_HOME/logs**目录下(如/usr/local/hadoop/logs),按组件分类(NameNode、DataNode、ResourceManager、NodeManager等),文件名通常包含主机名和时间戳(如hadoop-hadoop-namenode-debian.log)。通过ls命令可查看日志文件列表,du -sh *可检查各日志文件大小,避免磁盘空间耗尽。
cat:直接输出日志文件内容(适合小文件);less:分页查看大文件,支持上下翻页(空格)、搜索(/关键词);tail:实时查看日志新增内容(tail -f),常用于监控实时日志(如ResourceManager日志)。grep命令筛选特定日志级别(如ERROR)或关键词(如Connection refused),例如:grep "ERROR" $HADOOP_HOME/logs/hadoop-hadoop-namenode-*.log # 筛选NameNode的ERROR日志
grep -i "disk full" $HADOOP_HOME/logs/hadoop-hadoop-datanode-*.log # 不区分大小写查找磁盘满错误
awk按时间戳截取特定时段日志(如2025-09-17 10:00至11:00),例如:awk '/2025-09-17 10:00:00/,/2025-09-17 11:00:00/' namenode.log # 提取NameNode该时段日志
tail -f结合grep实时查看错误日志,例如:tail -f $HADOOP_HOME/logs/yarn-hadoop-resourcemanager-*.log | grep "ERROR"
Debian系统使用systemd管理Hadoop服务(如HDFS、YARN),可通过journalctl命令查看服务日志:
journalctl;journalctl -u yarn-hadoop-resourcemanager;journalctl --since "2025-09-17" --until "2025-09-18";journalctl -u yarn-hadoop-resourcemanager -f。yarn-site.xml启用日志聚合(将各节点日志收集到HDFS),参数如下:<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value> <!-- 保留7天 -->
</property>
聚合后,通过yarn logs -applicationId <appId>命令查看指定应用的日志(如yarn logs -applicationId application_1697520000000_0001)。dfs.audit.logger),追踪异常操作(如非法文件访问)。2025-09-17 10:30:00 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Disk failure on /dev/sdb),可通过awk或sed提取关键字段,例如:awk '{print $1" "$2, $4, $5, $0}' namenode.log # 提取时间、日志级别、类名和消息
grep筛选常见错误(如No space left on device、Connection refused);Full GC.*?(\d+\.\d+) secs),例如:grep -E 'Full GC.*?(\d+\.\d+) secs' namenode.log | awk '{print $NF}' # 提取Full GC耗时
grep 'Shuffle phase' taskexecutor.log),计算耗时分布(均值、标准差);grep 'DiskBalancer' datanode.log),生成IO延迟热力图;jstat -gcutil <pid> 1000),若Full GC占比超过15%,需提取堆转储文件(jmap -dump:live,file=heap.bin <pid>)分析。