Hadoop日志在Ubuntu上的查看方法
Hadoop运行时产生的日志默认存储在$HADOOP_HOME/logs目录下($HADOOP_HOME为Hadoop安装根目录,如~/hadoop-3.3.1)。若在hadoop-env.sh中配置了HADOOP_LOG_DIR环境变量(如export HADOOP_LOG_DIR=/data/hadoop-logs),则日志会存储在该自定义目录中。
使用tail -f命令可实时跟踪日志文件的新增内容,适用于监控正在运行的Hadoop组件状态(如NameNode、DataNode)。例如:
tail -f $HADOOP_HOME/logs/hadoop-<username>-namenode-<hostname>.log
tail -f $HADOOP_HOME/logs/hadoop-<username>-datanode-*.log
其中<username>为当前Ubuntu用户名(如hadoop),<hostname>为服务器主机名(如ubuntu-server)。
head -n 10 <日志文件路径>:查看日志文件前10行,快速了解日志开头信息;cat <日志文件路径>:输出整个日志文件内容,适合查看小型日志文件。使用grep命令结合关键字过滤日志,快速定位问题。例如搜索“ERROR”级别的日志:
grep "ERROR" $HADOOP_HOME/logs/hadoop-<username>-datanode-*.log
grep "Connection refused" $HADOOP_HOME/logs/hadoop-<username>-resourcemanager-*.log
使用sed命令查看日志文件的某一行或某一段落,例如查看第2行至第200行:
sed -n '2,200p' $HADOOP_HOME/logs/hadoop-<username>-namenode-*.log
Hadoop各核心组件的日志文件命名规则如下,可根据组件名称快速定位日志:
hadoop-<username>-namenode-<hostname>.log(主节点,负责HDFS元数据管理);hadoop-<username>-datanode-<hostname>.log(从节点,负责HDFS数据存储);hadoop-<username>-resourcemanager-<hostname>.log(主节点,负责YARN资源调度);hadoop-<username>-nodemanager-<hostname>.log(从节点,负责YARN任务执行)。若需查看MapReduce或Spark作业的详细日志,可使用YARN提供的yarn logs命令。例如:
yarn logs -applicationId <application_id>
其中<application_id>为作业的唯一标识(可通过yarn application -list命令获取)。该命令会输出作业的stdout、stderr及系统日志,帮助定位作业执行中的问题。