Ubuntu环境下,Hadoop的日志文件默认存储在$HADOOP_HOME/logs
目录下($HADOOP_HOME
为Hadoop安装根目录)。常见组件的日志路径如下:
hadoop-*-namenode-*.log
(NameNode)、hadoop-*-datanode-*.log
(DataNode)、hadoop-*-secondarynamenode-*.log
(Secondary NameNode);yarn-*-resourcemanager-*.log
(ResourceManager)、yarn-*-nodemanager-*.log
(NodeManager);mapred-*-jobhistory-*.log
(JobHistory Server)。通过基础命令可快速查看、筛选日志内容,适用于简单故障排查:
tail -f /path/to/hadoop/logs/*.log
(如实时监控NameNode日志),可动态跟踪日志更新;head -n 10 filename.log
(查看前10行)、tail -n 50 filename.log
(查看最后50行),适合快速获取日志概览;grep "ERROR" filename.log
(查找所有包含“ERROR”的行)、grep -i "timeout" *.log
(忽略大小写查找“timeout”),可快速定位错误信息;grep -A 10 -B 5 "Exception" filename.log
(显示匹配行及后10行、前5行),帮助查看错误发生的上下文;grep -c "ERROR" filename.log
(统计“ERROR”出现的次数),量化问题严重程度。Hadoop提供了专门的命令行工具,用于查看作业级别的日志,适合分析MapReduce或YARN作业问题:
hadoop fs -cat /path/to/logfile
(查看HDFS中存储的日志文件内容)、hadoop fs -tail /path/to/logfile
(实时查看HDFS日志末尾);yarn logs -applicationId <application_id>
(通过作业ID获取该作业的所有日志,需替换为实际ID),可查看作业的Container日志、ResourceManager日志等。对于大规模Hadoop集群,建议使用专业工具进行日志的集中管理、可视化及高级分析:
在分布式环境中,各节点的日志分散存储,需通过工具将日志聚合到中心节点,便于统一管理:
Hadoop日志文件会随时间增长而变大,需通过日志轮转工具定期压缩、归档旧日志,节省磁盘空间:
/etc/logrotate.d/hadoop
文件,添加以下内容(以HDFS日志为例):/var/log/hadoop-hdfs/*.log {
daily # 每天轮转一次
missingok # 如果日志文件不存在也不报错
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如.gz格式)
notifempty # 如果日志为空则不轮转
create 640 root adm # 创建新日志文件,权限为640,所有者为root,组为adm
}
该配置会自动管理HDFS日志的轮转,避免日志文件占用过多磁盘空间。通过以上方法,可实现对Ubuntu上Hadoop日志的有效分析,快速定位故障、优化集群性能。