Hadoop的日志默认存储在$HADOOP_HOME/logs目录下($HADOOP_HOME为Hadoop安装根目录,如/usr/local/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)。<username>是当前系统用户,<hostname>是主机名(可通过hostname命令查看)。Ubuntu下可通过以下Linux命令查看Hadoop日志:
tail -f命令,例如查看NameNode实时日志:tail -f $HADOOP_HOME/logs/hadoop-<username>-namenode-<hostname>.log
该命令会持续输出日志文件的新增内容,适合监控实时运行状态。head命令,例如查看HDFS日志前10行:head -n 10 $HADOOP_HOME/logs/hadoop-<username>-datanode-<hostname>.log
grep命令过滤关键字(如“ERROR”“Segmentation fault”),例如查找NameNode日志中的错误信息:grep "ERROR" $HADOOP_HOME/logs/hadoop-<username>-namenode-<hostname>.log
less命令,例如查看ResourceManager日志:less $HADOOP_HOME/logs/yarn-<username>-resourcemanager-<hostname>.log
按/键可搜索关键字,按q键退出。对于MapReduce作业的日志,可使用yarn logs命令直接获取:
<application_id>为实际作业ID(可通过yarn application -list获取),例如:yarn logs -applicationId <application_id>
该命令会输出作业的stdout、stderr和syslog等日志内容,包含任务执行详情(如Map/Reduce任务的耗时、错误堆栈)。Hadoop提供了Web界面方便查看日志:
http://<resourcemanager_ip>:8088,点击“Application”列表中的作业,进入作业详情页后可查看日志;http://<namenode_ip>:50070(Hadoop 2.x版本),点击“Logs”链接查看NameNode服务日志。less或tail -f命令,避免cat命令导致终端卡顿;grep快速定位;logrotate工具),避免占用过多磁盘空间。