Hadoop日誌存放目錄

初學者運行MapReduce作業時,經常會遇到各種錯誤,由於缺乏經驗,往往不知所云,一般直接將終端打印的錯誤貼到搜索引擎上查找,以借鑑前人的經驗。然而,對於hadoop而言,當遇到錯誤時,第一時間應是查看日誌,日誌裏通產會有詳細的錯誤原因提示,本文將總結Hadoop MapReduce日誌存放位置,幫助初學者定位自己遇到的錯誤。

Hadoop MapReduce日誌分爲兩部分,一部分是服務日誌,一部分是作業日誌,具體介紹如下:

1. Hadoop 1.x版本

Hadoop 1.x中MapReduce的服務日誌包括JobTracker日誌和各個TaskTracker日誌,他們的日誌位置如下:

JobTracker:在JobTracker安裝節點上,默認位置是${hadoop.log.dir}/logs/*-jobtracker-*.log,該文件每天生成一個,舊的日誌後綴是日期,當天的日誌文件後綴是“.log”,其中${hadoop.log.dir}默認值是hadoop安裝目錄,即${HADOOP_HOME}。


TaskTracker:在各個TaskTracker安裝節點上,默認位置是$HADOOP_HOME/logs/*-tasktracker-*.log,該文件每天生成一個,舊的日誌後面會跟一個日誌,當天的日誌文件後綴是“.log”


作業日誌包括jobhistory日誌和task日誌兩部分:

jobhistory日誌是作業運行日誌,包括作業啓動時間、結束時間,每個任務的啓動時間、結束時間,各種counter信息等,用戶可以從這個日誌中解析出作業運行的各種信息,是非常有價值的信息。默認存放位置是JobTracker所在節點的${hadoop.log.dir}/history目錄下,可通過參數hadoop.job.history.location配置。


每個task日誌存放在task運行節點上,存放位置是${hadoop.log.dir}/userlogs/<jobid>/<attempt-id>目錄下,每個task包含三個日誌文件,分別是stdout、stderr和syslog,其中,stdout是通過標準輸出打印出來的日誌,比如System.out.println,注意,程序中通過標準輸出打印的日誌並不會直接顯示在終端上,而是保存在這個文件中,syslog是通過log4j打印的日誌,通常這個日誌中包含的有用信息最多,也是錯誤調試中最關鍵的參考日誌。


2. Hadoop 2.x版本

Hadoop 2.x中YARN系統的服務日誌包括ResourceManager日誌和各個NodeManager日誌,他們的日誌位置如下:

ResourceManager日誌存放位置是Hadoop安裝目錄下的logs目錄下的yarn-*-resourcemanager-*.log

NodeManager日誌存放位置是各個NodeManager節點上hadoop安裝目錄下的logs目錄下的yarn-*-nodemanager-*.log

應用程序日誌包括jobhistory日誌和Container日誌,其中,jobhistory日誌是應用程序運行日誌,包括應用程序啓動時間、結束時間,每個任務的啓動時間、結束時間,各種counter信息等。

Container日誌包含ApplicationMaster日誌和普通Task日誌,它們均存放在Hadoop安裝目錄下的userlogs目錄中的application_xxx目錄下,其中ApplicationMaster日誌目錄名稱爲container_xxx_000001,普通task日誌目錄名稱則爲container_xxx_000002,container_xxx_000003,….,同Hadoop 1.x一樣,每個目錄下包含三個日誌文件:stdout、stderr和syslog,且具體含義是一樣的。

發佈了103 篇原創文章 · 獲贊 14 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章