在 Linux 上查看 Hadoop 日志,通常有以下几种方式和位置,按使用频率由高到低说明:
如果集群开启了 Web UI:
YARN ResourceManager
http://<resourcemanager-host>:8088
找到对应 Application → 点击 Logs → 查看 stdout / stderr / syslog
HDFS NameNode
http://<namenode-host>:9870
适合查“某个任务为什么失败”
$HADOOP_HOME/logs/
常见文件:
hadoop-<user>-namenode-<host>.loghadoop-<user>-datanode-<host>.logyarn-<user>-resourcemanager-<host>.logyarn-<user>-nodemanager-<host>.log查看示例:
tail -100f $HADOOP_HOME/logs/yarn-*-nodemanager-*.log
任务运行在 NodeManager 上,日志默认在:
$HADOOP_HOME/logs/userlogs/
结构:
userlogs/
└── application_xxxx/
└── container_xxxx/
├── stdout
├── stderr
└── syslog
查看:
cat $HADOOP_HOME/logs/userlogs/application_*/container_*/stderr
yarn logs -applicationId application_1234567_0001
常用:
yarn logs -applicationId <appId> | less
需要 YARN 日志聚合开启(
yarn.log-aggregation-enable=true)
路径一般在 NameNode 日志中:
$HADOOP_HOME/logs/hadoop-*-namenode-*.log
搜索:
grep "audit" hadoop-*-namenode-*.log
# 实时看日志
tail -f $HADOOP_HOME/logs/yarn-*-resourcemanager-*.log
# 查错误
grep -i error $HADOOP_HOME/logs/*.log
# 查某个任务
yarn application -list
yarn logs -applicationId <appId>
可能是:
HADOOP_LOG_DIR检查:
echo $HADOOP_LOG_DIR
cat $HADOOP_HOME/etc/hadoop/yarn-site.xml | grep log
如果你愿意,可以告诉我:
我可以直接给你最精准的命令。