在eclipse下运行mapreduce程序,运行成功,但是控制台没有运行信息,只有下面这3条警告该怎么办?


[attach]2274[/attach]
照网上说的把$HADOOP_HOME/etc/hadoop/目录下的log4j.properties文件复制到了MapReduce项目 src文件夹下,重新运行项目,还是那三行,是我放错地方了么?
[attach]2275[/attach]
 
已邀请:

fish - Hadooper

赞同来自: _Lee_

hadoop客户端的log输出方式通过log4j定义,log4j需要从应用执行的classpath中寻找log4j.properties这个文件以决定如何进行输出,没把log4j.properties放进来,java应用启动时在它的classpath中找不到文件,就没法正常输出。这就是原因。
 其实在hadoop应用代码编写的时候,我觉得eclipse-plugin是个很难用的东西,不值得要花太多精力在这上面。
这可看不出来。
运行的代码是什么?

fish - Hadooper

log4j.properties需要出现在任务执行时的classpath当中,将这个文件放到项目的classes目录中试试。

fish - Hadooper

1. 如果是打包成jar文件然后执行任务,jar文件肯定会是classpath需要包含的。
2. 如果任务的客户端直接在eclipse中执行,
  对于maven类型的eclipse项目,classes目录在target/classes下,类似如下:
[attach]2282[/attach]
  对于手动生成的普通java项目,没有classes子目录,项目目录本身就在classpath中,将log4j文件放在项目目录最顶级。

fish - Hadooper

那你的log4j.properties里面有什么内容呢?
最直接的办法是,把项目打包成的jar,使用hadoop jar方式执行,将log4j.properties放到hadoop classpath所在的地方,比如hadoop的etc/hadoop当中。
[attach]2283[/attach]
我是Hadoop2.6.0,hadoop-eclipse-plugin-2.6.0.jar文件放在eclipse/plugins目录下,log4j文件是从$HADOOP_HOME/etc/hadoop/目录下复制的
会出现这个问题的根本原因到底是什么呀,就是在项目下放置log4j文件后能成功看到运行信息,之后再新建项目又会出现这个问题,有没有能一次性解决的方法呢

要回复问题请先登录注册