设为首页 - 加入收藏
您的当前位置:主页 > 资源 > 技术文章 > 正文

Hadoop的日志在哪儿?

来源:未知 编辑:admin 时间:2017-09-16

Hadoop的日志

在开发Java程序时,我们经常使用sysout/syserr或是Log来输出日志信息。这些日志在java项目中一般会输出到控制台或指定文件中。

但在hadoopmapreduce中由于mapperreduce是分布式执行的,所以,在mapperReduce中使用sysout/syserrlog输出的信息不会输出到控制台。

(注意: main方法即驱动类的日志还是可以输出到控制台的。)

那么,在哪儿可以找到这些日志信息呢?答案是:http://ip:8088/logs/userlogs即可以查看这些日志。由于是分布式执行,所以,请查询不同的主机,因为你的Mapper程序会被分布到不同的服务器上执行。

以下是输出日志的代码:(注意背景部分)

package cn.hadoop.ik;

import java.io.IOException;

import java.io.StringReader;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.InputSplit;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.wltea.analyzer.core.IKSegmenter;

import org.wltea.analyzer.core.Lexeme;

/**

 * 使用IK对中文进行分词统计

 */

public class IKMain {

public static void main(String[] argsthrows Exception {

Job job = Job.getInstance(new Configuration());

job.setJarByClass(IKMain.class);

job.setJobName("IKAnalyzer");

job.setMapperClass(IKMapper.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(LongWritable.class);

job.setReducerClass(IKReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(LongWritable.class);

job.setInputFormatClass(TextInputFormat.class);

FileInputFormat.setInputPaths(jobnew Path(args[0]));

FileOutputFormat.setOutputPath(jobnew Path(args[1]));

System.exit(job.waitForCompletion(true) ? 0 : 1);

}

// 开发Mapper

public static class IKMapper extends Mapper<LongWritable, Text, Text, LongWritable> {

Log log = LogFactory.getLog(IKMapper.class);//请为每一个类设置一个日志输出对象

@Override

public void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)

throws IOException, InterruptedException {

IKSegmenter ik = new IKSegmenter(new StringReader(value.toString()), true);

Lexeme lexeme = null;

// 获取文件名称

InputSplit split = context.getInputSplit();

String fileName = "";

if (split instanceof FileSplit) {

FileSplit fileSplit = (FileSplit) split;

String path = fileSplit.getPath().getName();

fileName=path;

}

System.err.println("获取到的文件名为:" + fileName);

log.info("日志获取到的文件名称为:"+fileName);

while ((lexeme = ik.next()) != null) {// 判断是否有下一个元素

String str = lexeme.getLexemeText();

context.write(new Text(str), new LongWritable(1));

}

}

}

 

// 开发Reducer

public static class IKReducer extends Reducer<Text, LongWritable, Text, LongWritable> {

@Override

protected void reduce(Text text, Iterable<LongWritable> it,

Reducer<Text, LongWritable, Text, LongWritable>.Context ctxthrows IOException, InterruptedException {

Long sum = 0L;

for (LongWritable w : it) {

sum += w.get();

}

ctx.write(textnew LongWritable(sum));

}

}

 

}

 

以下是在MapReduce中找到的日志信息:

地址:syserr日志:

http://weric21:8088/logs/userlogs/application_1503927539558_0010/container_1503927539558_0010_01_000003/stderr

 

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/weric/hadoop-2.8.0/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/weric/hadoop_tmp_dir/nm-local-dir/usercache/wangjian/appcache/application_1503927539558_0010/filecache/11/job.jar/job.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

获取到的文件名为:word.txt

 

syslog日志:

http://weric21:8088/logs/userlogs/application_1503927539558_0010/container_1503927539558_0010_01_000003/syslog

 

2017-08-28 23:18:10,282 INFO [main] org.apache.hadoop.mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer

2017-08-28 23:18:11,788 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,834 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,837 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,839 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,887 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,889 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,891 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

2017-08-28 23:18:11,930 INFO [main] cn.hadoop.ik.IKMain$IKMapper: 日志获取到的文件名称为:word.txt

上一篇:spring+mybatis把Dao接口当成Mapper代理使用
下一篇:没有了

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

有乐趣咨询 www.peixinhotelbeijing.cn 联系QQ:4988723 邮箱:4988723@qq.com

Copyright © 2002-2017 DEDECMS. 东吴科技 版权所有 Power by DongWU

Top