深入剖析HADOOP程序日志

前提

本文来自于 博客园 逖靖寒的世界 http://gpcuster.cnblogs.com

了解log4j的使用

正文

本文来自于 博客园 逖靖寒的世界 http://gpcuster.cnblogs.com

*.log日志文件和*.out日志文件

进入我们的Hadoop_LOG目录,我们可以看到如下文件:

在启动Hadoop集群时,由hadoop-daemon.sh脚本指定一些列环境变量,然后log4j.properties文件读取相应的环境变量产生对应的*.log日志文件。这个日志文件输出类型为org.apache.log4j.DailyRollingFileAppender,它会自动按天更新。

*.out文件则是启动某个程序的标准输出重定向。

比如:

hadoop-admin-datanode-horde20.log是在horde20这台机器上启动datanode进程的日志输出,由log4j实现。

hadoop-admin-datanode-horde20.out则是在horde20这台机器上启动datanode时的标准输出。

这些日志仅仅包含在horde20这台机器上启动datanode进程的日志,没有其他的信息。

userlogs目录下的日志文件

进入userlogs目录,我们可以看到:

这里的每一个目录代表每一个task的输出日志。

进入其中一个目录可以看到:

这里的stderr和stdout记录了我们的task(map or reduce)的在这台机器上运行的过程中所产生的标准错误输出和标准输出。这些信息集群中的每一个机器上都会出现,如果数据量足够多的话:)

syslog则记录了在我们的task中,通过log4j接口记录的日志信息。

每一个task都会通过TaskRunner.run()来启动,它会为每一个子java程序指定标准错误输出和标准输出到前面提到的文件中,同时设置相应的参数,其中包括”-Dhadoop.root.logger=INFO,TLA”,这个TLA的定义可以在log4j.properties文件中找到,具体实现是org.apache.hadoop.mapred.TaskLogAppender。这个参数指定了在我们的task中,通过log4j接口记录的日志信息都记录到syslog中。

history目录下的日志文件

进入jobtracker机器的history目录,我们可以看到:

horde20_1250841267760_job_200908211554_0001_conf.xml记录了我们运行这个job时候的配置文件信息。

horde20_1250841267760_job_200908211554_0001_admin_wordcount记录了我们运行这个job的情况。

他们是由JobHistory产生的,并且只在jobtracker机器上产生。

EventCounter

在Hadoop的默认配置log4j.properties中,所有通过log4j接口记录的日志信息还会记录到一个叫EventCounter的Appender中,它的实现是org.apache.hadoop.metrics.jvm.EventCounter,具体的作用是统计Hadoop中使用log4j记录INFO,WARN,ERROR,FATAL信息的次数。

后记

本文介绍了Hadoop中所有的程序日志的来源和作用。希望能给开发和维护人员以帮助。

如果希望完全了解Hadoop的运行状况信息,还需要参考counter和metric。

转自:http://www.cnblogs.com/gpcuster/archive/2009/08/21/1551715.html

深入剖析HADOOP程序日志的更多相关文章

  1. 使用LogMaster4Net实现应用程序日志的集中管理

    日志在软件系统中的重要性我在此也不赘述了,几乎所有程序员每天都会更日志打交道. 那么你是否曾今为这样的一些事情而困扰过: - 远程登录到不同的服务器,找到应用程序目然后查看应用日志: - 来回切换于不 ...

  2. C# 使用Log4Net记录程序日志

    在之前的博客中,写过使用系统内置的Trace类记录程序日志,具体请参考:C# 使用Trace记录程序日志.这篇博客将介绍如何使用Log4Net记录程序日志. 首先需要引用Log4Net.dll,我们可 ...

  3. Hive分析hadoop进程日志

    想把hadoop的进程日志导入hive表进行分析,遂做了以下的尝试. 关于hadoop进程日志的解析 使用正则表达式获取四个字段,一个是日期时间,一个是日志级别,一个是类,最后一个是详细信息, 然后在 ...

  4. 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)

    使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...

  5. IntelliJ IDEA + Maven环境编写第一个hadoop程序

    1. 新建IntelliJ下的maven项目 点击File->New->Project,在弹出的对话框中选择Maven,JDK选择你自己安装的版本,点击Next 2. 填写Maven的Gr ...

  6. 写window应用程序日志System.Diagnostics.EventLog.WriteEntry

    System.Diagnostics.EventLog.WriteEntry( MySource , Writing to event log. ); 可以写window应用程序日志 查看的地方:右击 ...

  7. eclipse运行hadoop程序报错:Connection refused: no further information

    eclipse运行hadoop程序报错:Connection refused: no further information log4j:WARN No appenders could be foun ...

  8. WIN7下运行hadoop程序报:Failed to locate the winutils binary in the hadoop binary path

    之前在mac上调试hadoop程序(mac之前配置过hadoop环境)一直都是正常的.因为工作需要,需要在windows上先调试该程序,然后再转到linux下.程序运行的过程中,报Failed to ...

  9. 运行第一个Hadoop程序,WordCount

    系统: Ubuntu14.04 Hadoop版本: 2.7.2 参照http://www.cnblogs.com/taichu/p/5264185.html中的分享,来学习运行第一个hadoop程序. ...

随机推荐

  1. 【转】Android应用开发之PNG、IconFont、SVG图标资源优化详解

    1 背景 最近因为一些个人私事导致好久没写博客了,多事之年总算要过去了,突然没了动力,所以赶紧先拿个最近项目中重构的一个小知识点充下数,老题重谈. 在我们App开发中大家可能都会有过如下痛疾(程序员和 ...

  2. Windows文本文件编码

    目录 1 ANSI编码    2 2 UTF16BE编码    2 3 UTF16LE编码    2 4 UTF-8编码    2 5 BOM    3 6 乱码    3 7 总结    5 如下图 ...

  3. shell如何在指定文件的指定位置后面添加内容

    最近工作中遇到一个问题,想在某个文件的指定位置后面添加一个标志位,要求在shell脚本里实现. 问题说明: 想在sys_config.fex文本的某个字符串后面添加一个flag 例如:sys_conf ...

  4. iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好

    转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...

  5. robotframework笔记15

    资源和变量文件 用户关键字和变量 测试用例文件 和 测试套件 初始化文件只能用于文件在哪里 了,但 资源文件 提供一种机制来分享它们. 自 资源文件结构非常接近测试用例文件,它是 容易创建它们. 变量 ...

  6. DOM中元素节点、属性节点、文本节点

    DOM中有12中节点,但最常用到的是元素节点,属性节点,文本节点. 元素节点的节点类型(nodeType)是1: 属性节点的节点类型(nodeType)是2: 文本节点的节点类型(nodeType)是 ...

  7. .NET Reflector 8.2支持VS2013高亮显示和代码地图视图

    Red Gate Software公司最近发布的.NET Reflector 8.2支持Visual Studio 2013,其Reflector 桌面程序能够转换十六进制/十进制值.桌面程序还支持局 ...

  8. Qt之资源系统

    简述 Qt 的资源系统用于存储应用程序的可执行二进制文件,它采用平台无关的机制.当你的程序总需要这样的一系列文件(图标.翻译文件等)并且不想冒丢失某些文件的风险时,这就显得十分有用. 资源系统基于 q ...

  9. EasyUI tab常用

    获取选中的tab的title var tab = $('#tab_Employee').tabs('getSelected'); var t=tab.panel('options').title; t ...

  10. word linkage 选择合适的聚类个数matlab code

    clear load fisheriris X = meas; m = size(X,2); % load machine % load census % % X = meas; % X=X(1:20 ...