Ubuntu中HDFS日志查看指南
一 日志文件位置与命名
- 默认目录:HDFS 组件日志通常位于 $HADOOP_HOME/logs;若设置了环境变量 $HADOOP_LOG_DIR,则以该目录为准。常见文件命名示例:
- hadoop--namenode-.log
- hadoop--datanode-.log
- hadoop--secondarynamenode-.log
- 快速定位:
- 查看目录:ls $HADOOP_HOME/logs
- 实时看 NameNode:tail -f $HADOOP_HOME/logs/hadoop--namenode-.log
- 实时看 DataNode:tail -f $HADOOP_HOME/logs/hadoop--datanode-.log
- 日志目录可通过 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中的 HADOOP_LOG_DIR 自定义。
二 命令行高效查看
- 实时跟踪:tail -f $HADOOP_LOG_DIR/hadoop--namenode-.log
- 开头若干行:head -n 100 $HADOOP_LOG_DIR/hadoop--namenode-.log
- 全文查看:cat $HADOOP_LOG_DIR/hadoop--namenode-.log
- 关键字过滤:grep -i “error|exception” $HADOOP_LOG_DIR/hadoop--namenode-.log
- 按时间段筛选(示例为 2025-01-01 10:00:00 至 10:05:00):
- sed -n ‘/2025-01-01 10:00:00/,/2025-01-01 10:05:00/p’ $HADOOP_LOG_DIR/hadoop--namenode-.log | more
- 若采用 systemd 管理 Hadoop 服务,可用:journalctl -u hadoop(或具体服务单元名)查看服务日志。
三 Web 界面查看
- NameNode Web UI(Hadoop 3.x):访问 http://<namenode_ip>:9870,在页面导航进入 Utilities → Logs,可在线查看 NameNode/SecondaryNameNode 的日志。
- 老版本 HDFS UI(Hadoop 2.x):访问 http://<namenode_ip>:50070,同样在 Utilities → Logs 查看。
四 与 YARN 和 MapReduce 日志的区分
- HDFS 日志关注文件系统层(如 NameNode/DataNode);而作业运行日志属于 YARN/MapReduce,通常位于 $HADOOP_HOME/logs/userlogs/,或通过 YARN Web UI(常见端口 19888) 的 JobHistory 查看。
- 若启用了日志聚合(yarn.log-aggregation-enable=true),作业日志会聚合到 HDFS 指定目录,可在 JobHistory 页面直接跳转查看。
五 常见问题排查要点
- 服务未启动导致连接失败(如 Connection refused):先确认 NameNode/DataNode 已启动(可用 jps 检查),再查看对应日志定位原因。
- 磁盘空间不足(No space left on device):清理旧日志或扩容磁盘,避免日志写入失败。
- 权限问题(Permission denied):检查日志目录及父目录权限,确保运行用户可写。