**
运行程序后在 Console 面板中会出现警告提示:
**
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
在使用 Eclipse 运行 MapReduce 程序时,会读取 Hadoop-Eclipse-Plugin 的 Advanced parameters 作为 Hadoop 运行参数,如果我们未进行修改,则默认的参数其实就是单机(非分布式)参数,因此程序运行时是读取本地目录而不是 HDFS 目录,就会提示 Input 路径不存在。
Exception in thread “main” org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/home/hadoop/workspace/WordCountProject/input
所以我们需要将配置文件复制到项目中的 src 目录,来覆盖这些参数。让程序能够正确运行。
log4j 用于记录程序的输出日记,需要 log4j.properties 这个配置文件,如果没有复制该文件到项目中,运行程序后在 Console 面板中会出现警告提示,因此,解决方法是:
将 /usr/local/hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(~/workspace/WordCount/src)中:
cp /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/hadoop/workspace/WordCount/src
cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hadoop/workspace/WordCount/src
cp /usr/local/hadoop/etc/hadoop/log4j.properties /usr/local/hadoop/workspace/WordCount/src
第二个目录workspace是eclipse工程所在的工作目录。