如何查看MapReduce執行的程序中的輸出日志


我們開發程序的時候,好多人都喜歡用sysout輸出內容來查看運行情況。但是在MR程序里寫了之后,卻不知道去哪里查找,可以參考這篇文章。

 

第一種方法,我們可以在MapReduce任務查看頁面找到這些日志

1.在MapReduce任務查看頁面找到任務,點擊進入

 2.在任務詳情頁最下面由執行了該任務的節點

 3.在節點的web地址后面加上logs/userlogs就能看到application列表,選擇自己要找的

4.依次查看container

5.從container進去之后就是最終要找的日志了

 

  • stderr:輸出System.err輸出的信息;
  • stdout:輸出System.out輸出的信息
  • syslog:輸出日志工具(比如Slf4j,log4j)輸出的信息

 

可以看出通過管理頁面查找sysout日志是十分麻煩的,而且mapper和reducer的日志不在一起,如果有多個reducer的話查看起來更是不方便

我們的代碼(mapper,reducer)是放到了Yarn上面去執行,Yarn的日志存放地址是在yarn-env.sh中配置的,如下

我們可以去節點上面查找;為了方便快捷  直接用腳本搞定

scanMRLog.sh [applicationid] [logtype 可選]

if [ $# -le 0 ]
then
    echo 缺少參數
    exit 1
fi

logtype=out

if [ $# -ge 1 ]
then
    logtype=${2}
fi 

for n in `cat ${HADOOP_HOME}/etc/hadoop/slaves`
do
    echo ===========查看節點 $n============
    ssh $n "cat ~/logs/yarn/userlogs/${1}/container_*/*${logtype}"
done

 

 

查看的時候只需要一行命令搞定,mapper,reducer里面的輸出就都能看到了。默認查詢out,其他可輸入類型還有 err,log

# 命令中的appId從MRWeb管理端就能看到
sh test.sh application_1479689852668_0197

 

 

 

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM