Hadoop 之日志管理—应用在 YARN 中运行时的日志
背景:
在写这篇博文前,自己一直没有弄明白一个问题,“在 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 中运行时的日志的更多相关文章
- sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理
sql服务器第5级事务日志管理的阶梯:完全恢复模式下的日志管理 原文链接http://www.sqlservercentral.com/articles/Stairway+Series/73785/ ...
- Android权限管理之Android 6.0运行时权限及解决办法
前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...
- Spark以yarn方式运行时抛出异常
Spark以yarn方式运行时抛出异常: cluster.YarnClientSchedulerBackend: Yarn application has already exited with st ...
- QWizard中运行时默认按钮显示英文问题
QWizard中运行时默认按钮在编译前设计界面的时候是显示中文的,运行的时候就变成英文了.. 后来是发现国际化的时候有问题,解决办法如下: 在main.cpp里加: QTranslator* tran ...
- c#中运行时编译时 多态
c#中运行时编译时 多态 public class aa { } public class bb:aa { } public class cc { public static void Main( ...
- [原创]如果软件在网络磁盘中或移动磁盘中运行时需要解决 exception C0000006 异常问题
//如果软件在网络磁盘中或移动磁盘中运行时需要利用下面这句命令来解决 exception C0000006 异常问题 {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FRO ...
- 『学了就忘』Linux日志管理 — 90、Linux中日志介绍
目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...
- 微软日志工厂 Microsoft.Extensions.Logging 中增加 log4net 的日志输出
前提: 需要nuget Microsoft.Extensions.Logging.Log4Net.AspNetCore 2.2.6: 描述:解决 .net core 微软日志工厂 Micros ...
- 你必须了解的java内存管理机制(一)-运行时数据区
前言 本打算花一篇文章来聊聊JVM内存管理机制,结果发现越扯越多,于是分了四遍文章(文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8),本文为其中第一篇.from 你必须了解的java内存 ...
随机推荐
- 如何在浏览器中简单模拟微信浏览器(仅限于通过User Agent进行判断的页面)
模拟微信浏览器: .打开360极速 .F12开发者工具 .开发者模式左上方有一个手机样子的图标 点击进入 设备模式‘ .将UA选项中的字符串替换成: Mozilla/ 备注: 替换的字符串是微信浏览器 ...
- 【H5】使用h5实现复制粘贴功能
方案一 : 可满足大部分浏览器正常使用 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- Delphi Code Editor 之 基本操作
Delphi Code Editor 之 基本操作 毫无疑问,Delphi是高度可视化的.这是使用Delphi进行编程的最大好处之一.当然,任何一个有用的程序中都有大量手工编写的代码.当读者开始编写应 ...
- Qt编写可拖动对象+背景地图+多种样式+多种状态(开源)
在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,为此特意编写本控件,全部开源出来,欢迎大家提建议.同时多多支持整套自定义控件 ...
- 设置RabbitMQ远程ip登录
由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq. ...
- docker报错“net/http: TLS handshake timeout”的解决方法
为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值. { "registry-mirrors": ...
- 【CF718E】Matvey's Birthday BFS+动态规划
[CF718E]Matvey's Birthday 题意:给你一个长度为n的,由前8个小写字母组成的字符串s.构建一张n个点的无向图:点i和点j之间有一条长度为1的边当且仅当:|i-j|=1或$s_i ...
- 基于Token的多平台身份认证价格设计
1 概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格局 . 不同的客户端产生了不同的用户使用 ...
- iOS SwiftMonkey 随机暴力测试
参考源文章 https://github.com/zalando/SwiftMonkey https://kemchenj.github.io/2017/03/16/2017-03-16/ 简介 这个 ...
- Java -- 给定一个int数组,拼接出最大数值
public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args | ...