如何查看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
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
# 命令中的appId从MRWeb管理端就能看到 sh test.sh application_1479689852668_0197
我们开发程序的时候,好多人都喜欢用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
经验分享 程序员 微信小程序 职场和发展