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内存 ...
随机推荐
- PHP关于按位取反结果的推导过程
哎呀几年过去,都快把大学学的计算机导论的知识给忘完了,现在来回顾一下按位去反的流程: <?php /** 首先来补充一下基础知识: php中有4个位运算,分别是&与 |或 ^异或 ~取反 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用D ...
- G711算法学习
采样和量化 首先需要明确的两个概念,“采样”和“量化”.对于给定的一个波形,采样是从时间上将连续变成离散的过程,而采样得到的值,可能还是不能够用给定的位宽(比如8bit)来表示,这就需要经过量化,即从 ...
- Unity3D动作资源(AnimatinClip)优化
能做到去掉Scale曲线,降低浮点精度 using System; using UnityEngine; using System.Collections; using System.Collecti ...
- 安装 SQL SERVER MsiGetProductInfo 无法检索 Product Code 1605错误 解决方案
重装数据库服务器上的SQL SERVER 2008 上遇到了以下问题 标题: SQL Server 安装程序失败. SQL Server 安装程序遇到以下错误: MsiGetProductInfo 无 ...
- [APP] Android 开发笔记 006-使用短信验证SDK进行短信验证
1. 下载SDK (http://www.mob.com/#/download) SMS For Android Studio: http://www.mob.com/download/sms/and ...
- 9.21 form 和Ajax详解
form 表单 参考连接 : http://www.cnblogs.com/liwenzhou/p/8747872.html
- php下载文件,解压文件,读取并写入新文件
以下代码都是本人在工作中遇到的问题,并完成的具体代码和注释,不多说,直接上代码: <?php //组织链接 $dataurl = "http://118.194.2 ...
- Solr学习笔记之4、Solr配置文件简介
Solr学习笔记之4.Solr配置文件简介 摘自<Solr in Action>. 1. solr.xml – Defines one or more cores per Solr ser ...
- 【转】.NET 应用程序是怎么运行的
原文:http://www.cnblogs.com/xishuai/p/mono-dotnetcore.html .NET应用程序运行过程 C#程序运行过程 CLR结构