背景:

在写这篇博文前,自己一直没有弄明白一个问题,“在 Map 函数和 Reduce 函数中使用 System.out.print 打印日志时,输出内容在哪里显示?”。试了好多回,在 log/* 目录下找了很久都没有找到,并且尝试了很多次去找,都没有成功。这让我想通过此方法调试 Map/Reduce 函数以失败告终。

最后,一次偶然的机会让我发现了关于日志的玄机。通过自己的观察和阅读参考书籍,终于弄明白了。


客户端向 YARN 提交 MapReduce 作业运行时,会建立 Container 运行日志,并保存在本地磁盘(不是 HDFS 中),默认情况下,日志目录为 logs/userlogs/ 。此目录下的内容为各个作业运行时在本节点上所建立的 log 目录结构,此层由 “application ” 加 “id” 组成文件夹名,进入此文件夹后,在此层看到的是由 “conainer” 加 “id” 组成的文件夹,进入此文件夹后,在此层有三个文件:stderr(异常输出),stdout(标准输出),syslog(运行日志)。

有时,我们希望使用 System.out.println 来查看运行过程中的某些值的情况,所以,我们要找到这个输出要在哪里才能看到。

下面来考究一下这个问题~ 
Hadoop 在 MapReduce 中使用 System.out.println 打印内容时,内容输出地址为 MRAppMaster 运行的节点上,目录为 logs/userlogs/application_1453984687920_0004/container_1453984687920_0004_01_000002

注: 
application_1453984687920_0004 
——为对应的 application_id,Hadoop 集群中所有配合 MRAppMaster 运行过该作业的的节点都会产生这个目录存放相应的日志。

container_1453984687920_0004_01_000002 
——在作业准备运行阶段,已经向 ResourceManager 申请过运行作业需要的 container ,作业运行时包含的所有 container 点都会在 application_id 目录下再创建一个 自己对应的 container_id 的目录。

然后在 container_id 这个目录下存放着三个不同的文件输出:stderr(异常输出),stdout(标准输出),syslog(运行日志)。 
注意,在 MapReduce 程序里书写 System.out.print 时,会输出到stdout 中,并且只在 MRAppMaster 运行的节点上的 container_id 目录下的 stdout 文件中才会有 。

怎样才能知道 MapReduce 作业的 MRAppMaster 运行在哪个节点呢?有很多种方法,例如通过 jps 命令查看进程。不过最好的方法是通过访问主节点的 8088 端口来查看所有作业的运行情况,会显示 MRAppMaster 运行在哪个节点上。

Hadoop 之日志管理—应用在 YARN 中运行时的日志的更多相关文章

  1. sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理

    sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理 原文链接http://www.sqlservercentral.com/articles/Stairway+Series/73785/ ...

  2. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  3. Spark以yarn方式运行时抛出异常

    Spark以yarn方式运行时抛出异常: cluster.YarnClientSchedulerBackend: Yarn application has already exited with st ...

  4. QWizard中运行时默认按钮显示英文问题

    QWizard中运行时默认按钮在编译前设计界面的时候是显示中文的,运行的时候就变成英文了.. 后来是发现国际化的时候有问题,解决办法如下: 在main.cpp里加: QTranslator* tran ...

  5. c#中运行时编译时 多态

    c#中运行时编译时 多态   public class aa { } public class bb:aa { } public class cc { public static void Main( ...

  6. [原创]如果软件在网络磁盘中或移动磁盘中运行时需要解决 exception C0000006 异常问题

    //如果软件在网络磁盘中或移动磁盘中运行时需要利用下面这句命令来解决 exception C0000006 异常问题 {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FRO ...

  7. 『学了就忘』Linux日志管理 — 90、Linux中日志介绍

    目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...

  8. 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出

    前提: 需要nuget   Microsoft.Extensions.Logging.Log4Net.AspNetCore   2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...

  9. 你必须了解的java内存管理机制(一)-运行时数据区

    前言 本打算花一篇文章来聊聊JVM内存管理机制,结果发现越扯越多,于是分了四遍文章(文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8),本文为其中第一篇.from 你必须了解的java内存 ...

随机推荐

  1. X64下的虚拟地址到物理地址的转换

    https://bbs.pediy.com/thread-203391.htm   早就知道传上来排版会全乱掉,把pdf直接传上来吧 x64结构体系寻址.pdf 发现安大的关于x86启用PAE下的虚拟 ...

  2. nodelua

    最近在学习go,对go中网络处理的方式比较喜欢,就用lua coroutine + C 模仿着接口实现一个玩具玩玩. 主要框架是lua导入C模块的时候会启动一个网络线程,lua和网络之间通过两个消息队 ...

  3. Android设计和开发系列第一篇:Notifications通知(Develop—Training)

    Develop篇 Building a Notification PREVIOUSNEXT THIS LESSON TEACHES YOU TO Create a Notification Build ...

  4. 【cs229-Lecture11】贝叶斯统计正则化

    本节知识点: 贝叶斯统计及规范化 在线学习 如何使用机器学习算法解决具体问题:设定诊断方法,迅速发现问题 贝叶斯统计及规范化(防止过拟合的方法) 就是要找更好的估计方法来减少过度拟合情况的发生. 回顾 ...

  5. 【CSS系列】height:100%设置div的高度

    一.div设置百分百高度实现描述 在html布局中body内第一个div盒子对象设置100%高度height样式,是无法成功显示100%高度的.这个是因为body高度默认值为自适应的,所以及时设置bo ...

  6. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  7. RedHat 简易配置 VNC Server 与VNC View详细说明

    首先下载Linux版本的VNC文件. 下载地址:http://www.realvnc.com/download/vnc/ 如:VNC-5.0.2-Linux-x86-RPM.tar.gz(其实解压出来 ...

  8. vue-resource使用 (vue仿百度搜索)

    1.this.$http.get()方法2.this.$http.post()方法3.this.$http.jsonp()方法 (vue仿百度搜索) 在输入框中输入a, 然后在百度f12 ==> ...

  9. locate命令的使用

    使用locate命令,遇到了这样的情况:当前目录下有一个文件,而使用这个命令时却查找不到这个文件,上网查了一下,找到了原因,就在下面. 1. find find是最常见和最强大的查找命令,你可以用它找 ...

  10. Adobe edge animate制作HTML5动画可视化工具(一)

    Edge Animate for mac是Adobe最新出品的制作HTML5动画的可视化工具,简单的可以理解为HTML5版本的Flash Pro.在之后的文章中,我会逐一的介绍这款新的HTML5动画神 ...