歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

如何查看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

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

# 從Hadoop的配置文件獲取所有datanode
for n in `cat ${HADOOP_HOME}/etc/hadoop/slaves`
do
    echo ===========查看節點 $n============
    #  下面的 ~/logs/yarn 是在yarn-site.xml中設定的日志目錄
    ssh $n "cat ~/logs/yarn/userlogs/${1}/container_*/*out"
done 

查看的時候只需要一行命令搞定,mapper,reducer裡面的輸出就都能看到了

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

Copyright © Linux教程網 All Rights Reserved