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日志的有效分析,快速定位故障、優化集群性能。