整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

​ 5.5.6 Hadoop日志

hadoop 小红牛 7℃ 0评论

针对不同用户,Hadoop在不同的地方生成日志。表5-2对此进行了总结。

从前文可以看到,MapReduce任务日志可以从Web界面访问,这是最便捷的方式。也可以从执行taskattempt(tasktracker的本地文件系统中找到日志文件,目录以taskattempt来命名。如果启用任务]VM重用功能(参见6.5.4节),每个日志文件累加成为整个JVM运行日志,所以,多个taskattempt存放在一个日志文件中。Web界面隐藏了这一点,只显示与正在査看的taskattempt相关的部分日志。

对这些日志文件的写操作是很直观的。任何到标准输出或标准错误流的写操作都直接写到相关日志文件。当然,在Streaming方式下,标准输出被用于mapreduce的输出,所以不会出现在标准输出日志文件中。

Java中,如果想用ApacheCommons LoggingAIM,就可以写入任务的系统日志文件中(syslogfile)。如范例5-13所示。

范例5-13•这个等价的Mapper写到标准输出(使用Apache Commons Logging API)

import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.mapreduce.Mapper;

public class LoggingIdentityMapper<KEYIN>VALUEIN, KEYOUT, VALUEOUT> extends Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {

private static final Log LOG = LogFactory.getLog(LoggingIdentityMapper.class);

 

@Override

public void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException {

// Log to stdout file

System.out.printIn("Map key: " + key); .

// Log to syslog file

LOG.info("Map key: " + key);

if (LOG.isDebugEnabled()) {

LOG.debug("Map value: " + value);

}

context.write((KEYOUT) key, (VALUEOUT) value);

默认的日志级别是INFO,因此BEBUG级别的消息不在syslog任务日志文件中出现。然而,有时候如果希望看到这些消息可以适当设置mapred.map.child.log.level或者mapred.reduce.child.log.level(从

0.22开始)。例如,对于上面的情况你可以为mapper进行如下设置,以便能够看到日志中的map值。

%hadoop jar hadoop-examples.jar LoggingDriver -conf conf/hadoop-cluster.xml \

-D mapred.map.child.log.level=DEBUG input/ncdc/sample.txt ^logging-out

有一些控制用于管理任务日志的大小和记录保留时间。在默认情况下,日志最短在24小时后删除(通过mapred.user'log.retain.hours属性来设置)。也可以用mapred.userlog.limit.kb属性在每个日志文件的最大大小上设置一个阈值,默认值是〇,表示没有上限。

5-2. Hadoop曰志的类型

日志

主要对象

描述

更多信息

系统守护 进程日志

管理员

每个Hadoop守护进程产生一个日志文件 (使用log^fj)和另一个(文件合并标准输出 和错误)。这些文件分别写入hadoop_ L0G_DIR环境变量定义的目录

参见9.4.2节 和10.2.1

HDFS审计日志

管理员

这个日志记录所有HDFS请求,默认是关 闭状态。虽然该日志存放位置可以配置, 但一般写入namenode的日志

参见丨0.1.3

MapReduce作业历史

日志

用户

记录作业运行期间发生的事件(如任务完 成)。集中保存在jobtracker上的_logs/ history子目录中的作业输出目录中

参见5.2.2的补充内容任务历史

 

 

 

续表

日志主要对象描述更多信息

MapReduce用户毎个tasktr^cker子进程都用log4j产生一参见本节

任务日志个日志文件(称作—个保存发到

标准输出(^也《0数据的文件,一个保存标准错误(sWerr)的文件。这些文件写入到HADOOP_LOG_DIR环境变量定义的目录的twer/ogs的子目录中

有时你可能需要调试一个问题,这个问题你怀疑在运行一个Hadoop命令的JVM上发生,而不是在襄群上。你可以通过如下调用将DEBUG级别曰志发送给控制台:

%HAD00P_R00T_L06GER=DEBUG,console hadoop fs -text /foo/bar

转载请注明:全栈大数据 » ​ 5.5.6 Hadoop日志

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址