原因:分析代码的时候,在eclipse中通过Build Path引入的软件包(hadoop-0.20.2-core.jar)是编译后的.class文件,是无法直接修改编译的。要很难跟踪引入包的程序执行过程。
解决方案:可以将hadoop的源代码复制到自己的工程中,这样和引入软件包的效果是相同的
具体过程:
(1)下载hadoop的源代码(到apache官网下载http://download.nextag.com/apache/hadoop/common/)。
(2)解压后就可以看到源码,在工程中新建org.apache.hadoop包,将源代码src目录下的src\core\org\apache\hadoop和src\hdfs\org\apache\hadoop以及src\mapred\org\apache\hadoop三个目录下的所有的文件夹复制到刚才创建的软件包中。
(3)现在程序中肯定有很多错误,因为刚才复制的代码需要引入其他软件包,引入必要的软件包,源码的lib目录下已经有所有的必要软件包,通过Buid Path ->add external jars引入软件包:jets3t-0.6.1.jar和kfs-0.2.2.jar,到现在程序应该没有错误了,但是还不能运行,应为没有加载必要的配置文件
(4)加载配置文件,将hadoop-0.20.2-core.jar解压,将解压后的文件中的core-default.xml,hadoop-metrics.properties,hdfs-default.xml,mapred-default.xml,bin.tgz这5个配置文件复制到Nutch工程中的conf文件夹中
(5)通过上面处理,程序就可以正常运行了。
备注:不要把Nutch配置文件夹conf中的log4j.properties覆盖掉,回事日志系统出错。