分享

Hadoop 配置Log4J只生成文件,没有内容

Joker 发表于 2015-1-29 16:51:47 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 10 53026
我在haadoop/etc/hadoop中配置log4J,但是只是生成了文件,并没有写入数据

  1. public static final Log myLOG = LogFactory.getLog("zzc");  
  2.        
  3.         public static void main(String[] args) throws Exception {
  4.                
  5.                 String[] fils = {"/input/a.txt","/log_out"};
  6.                 ToolRunner.run(new Configuration(), new WordCount(), fils);
  7.                
  8.         }
  9.        
  10.         @Override
  11.         public int run(String[] args) throws Exception {
  12.                
  13.                 Configuration conf = new Configuration();
  14.                
  15.                 Job job = Job.getInstance(conf, "xz");
  16.                
  17.                 job.setJarByClass(WordCount.class);
  18.                
  19.                 job.setMapperClass(Map.class);
  20.                 job.setReducerClass(Reduce.class);
  21.                
  22.                 job.setOutputKeyClass(Text.class);
  23.                 job.setOutputValueClass(LongWritable.class);
  24.                
  25.                 FileInputFormat.setInputPaths(job, new Path(args[0]));
  26.                 FileOutputFormat.setOutputPath(job, new Path(args[1]));
  27.                
  28.                
  29.                
  30.                 return job.waitForCompletion(true) ? 0 : 1;
  31.         }
  32.        
  33.        
  34.         public static class Map extends Mapper<Object, Text, Text, LongWritable>{
  35.                
  36.                 @Override
  37.                 protected void map(Object key, Text value,Context context)
  38.                                 throws IOException, InterruptedException {
  39.                        
  40.                         myLOG.debug("Map...");
  41.                        
  42.                         String line = value.toString();
  43.                        
  44.                         String[] values = line.split(",");
  45.                        
  46.                         for(String str : values){
  47.                                 context.write(new Text(str), new LongWritable(1));
  48.                         }
  49.                        
  50.                 }
  51.                
  52.         }
  53.        
  54.         public static class Reduce extends Reducer<Text, LongWritable, Text, LongWritable>{
  55.                
  56.                 @Override
  57.                 protected void reduce(Text key, Iterable<LongWritable> values,Context context)
  58.                                 throws IOException, InterruptedException {
  59.                        
  60.                         myLOG.debug("Reduce...");
  61.                        
  62.                         long sum = 0;
  63.                        
  64.                         for(LongWritable val : values){
  65.                                 sum += val.get();
  66.                         }
  67.                        
  68.                         context.write(key, new LongWritable(sum));
  69.                 }
  70.                
  71.                
  72.                
  73.         }
复制代码


QQ图片20150129164314.png

已有(10)人评论

跳转到指定楼层
desehawk 发表于 2015-1-29 18:07:12
应该是
hadoop/conf/log4j.properties这个文件
对它进行设置,包括日志级别等。
更多参考这个
Hadoop log4j日志配置介绍


回复

使用道具 举报

Joker 发表于 2015-1-29 20:40:15
desehawk 发表于 2015-1-29 18:07
应该是
hadoop/conf/log4j.properties这个文件
对它进行设置,包括日志级别等。

Hadoop2.2我都没找到conf目录
回复

使用道具 举报

s060403072 发表于 2015-1-29 22:19:32
Joker 发表于 2015-1-29 20:40
Hadoop2.2我都没找到conf目录

是不是日志级别设置不正确
回复

使用道具 举报

Joker 发表于 2015-1-29 22:39:13
s060403072 发表于 2015-1-29 22:19
是不是日志级别设置不正确

DEBUG级别啊,程序调用也是DEBUG
回复

使用道具 举报

s060403072 发表于 2015-1-29 22:52:09
Joker 发表于 2015-1-29 22:39
DEBUG级别啊,程序调用也是DEBUG

log4j,hadoop已经有默认的配置,如果想在程序中调试,复制$HADOOP_HOME/etc/hadoop/目录下的log4j.properties文件到MapReduce项目 src文件夹下即可
回复

使用道具 举报

Joker 发表于 2015-1-29 23:25:00
s060403072 发表于 2015-1-29 22:52
log4j,hadoop已经有默认的配置,如果想在程序中调试,复制$HADOOP_HOME/etc/hadoop/目录下的log4j.prope ...

你加入在src下,打成Jar包不会加入进去的。现在的问题就是,在集群上使用log4J,Map Task和Reduce Task的log不会被记录
其它函数的会被写入。在找原因
回复

使用道具 举报

bioger_hit 发表于 2015-1-30 00:24:55
Joker 发表于 2015-1-29 23:25
你加入在src下,打成Jar包不会加入进去的。现在的问题就是,在集群上使用log4J,Map Task和Reduce Task的 ...

建议参考这两篇文章
windows7+eclipse+hadoop2.5.2环境配置

Win7中使用Eclipse连接虚拟机中的Ubuntu中的Hadoop2.4经验总结

回复

使用道具 举报

Joker 发表于 2015-1-30 09:44:55
bioger_hit 发表于 2015-1-30 00:24
建议参考这两篇文章
windows7+eclipse+hadoop2.5.2环境配置

我在Eclipse中可以存储Map和Reduce的Task异常信息,但是放在进群上就存储不了Map和Reduce的异常
回复

使用道具 举报

s060403072 发表于 2015-1-30 17:17:53
Joker 发表于 2015-1-30 09:44
我在Eclipse中可以存储Map和Reduce的Task异常信息,但是放在进群上就存储不了Map和Reduce的异常

集群直接配置日志级别就可以了。而且默认有这个日志。
真正的问题是什么,建议描述清楚
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条