Hadoop的日志默认存储在$HADOOP_HOME/logs
目录下($HADOOP_HOME
为Hadoop安装根目录),不同组件的日志文件命名规则如下:
hadoop-<username>-namenode-<hostname>.log
(NameNode日志)、hadoop-<username>-datanode-<hostname>.log
(DataNode日志);yarn-<username>-resourcemanager-<hostname>.log
(ResourceManager日志)、yarn-<username>-nodemanager-<hostname>.log
(NodeManager日志);$HADOOP_HOME/logs/userlogs/<application_id>/
目录下,每个任务包含stdout
(标准输出)、stderr
(标准错误)、syslog
(系统日志,最核心的调试信息)三个文件。Linux下可通过以下基础命令查看Hadoop日志:
cat
:直接输出日志文件全部内容,适合小文件快速查看。例如:cat $HADOOP_HOME/logs/hadoop-hadoop-namenode-localhost.log
;less
:分页查看大日志文件,支持上下翻页(空格
/b
)、搜索(/keyword
)和退出(q
)。例如:less $HADOOP_HOME/logs/hadoop-hadoop-datanode-localhost.log
;tail
:实时监控日志文件的最新更新(如服务运行状态、错误信息),-f
参数表示持续跟踪。例如:tail -f $HADOOP_HOME/logs/yarn-hadoop-resourcemanager-localhost.log
;grep
:搜索日志中的关键字(如“ERROR”“Exception”),快速定位问题。例如:grep "ERROR" $HADOOP_HOME/logs/hadoop-hadoop-namenode-localhost.log
;head
:查看日志文件的前N行(如前10行),适合快速了解日志头部信息。例如:head -n 10 $HADOOP_HOME/logs/hadoop-hadoop-datanode-localhost.log
。tail -f
命令监控对应日志文件。例如:tail -f $HADOOP_HOME/logs/hadoop-hadoop-namenode-localhost.log
;若需查找NameNode启动错误,可使用grep "ERROR" $HADOOP_HOME/logs/hadoop-hadoop-namenode-localhost.log
;tail -f $HADOOP_HOME/logs/yarn-hadoop-resourcemanager-localhost.log
实时查看;若需查看NodeManager的错误信息,可使用grep "Exception" $HADOOP_HOME/logs/yarn-hadoop-nodemanager-localhost.log
;userlogs
目录查看。例如,查看应用ID为application_1234567890000_0001
的syslog
(关键调试信息),可使用:cat $HADOOP_HOME/logs/userlogs/application_1234567890000_0001/container_1234567890000_0001_01_000001/syslog
。yarn logs
命令:直接查看YARN管理的作业日志,无需手动进入日志目录。例如,查看指定应用ID的日志:yarn logs -applicationId application_1234567890000_0001
;若需查看所有失败任务的日志,可结合grep
过滤:yarn logs -applicationId application_1234567890000_0001 | grep "FAILED"
。log4j.properties
中的appender
配置),需以实际配置的路径为准;grep
、awk
等工具对日志进行过滤和分析(如统计错误次数、提取特定时间段的日志),提升排查效率。