Nutch 2.x + Hadoop 2.5.2 + Hbase 0.94.26
一开始运行Nutch 2.x 总是报下面这个错误:
java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.Counter, but class was expected
这个问题足足折腾了2天,查了无数资料,始终不能解决问题,虽然问题定位在Nutch 编译的时候使用了Hadoop 1.x,然后运行的时候是在Hadoop 2.x上,但是始终找不到到底什么时候依赖了hadoop-core-1.0.1,最后仔细研究了一下Nutch使用的编译工具,运行ant report把整个项目的依赖关系打印出来,发现原来是gora-core这个包,于是修改ivy.xml,添加了
<exclude org="org.apache.hadoop" name="hadoop-core"/>
这么一句话,然后再编译,nutch就可以运行了!明天试试Nutch 2.x+Hadoop 2.6+Hbase 0.98.9
还有几个要点记录一下:
1、nutch-site.xml需要添加
<property>
<name>io.serializations</name>
<value>org.apache.hadoop.io.serializer.WritableSerialization</value>
<description>A list of serialization classes that can be used for
obtaining serializers and deserializers.</description>
</property>
2、编译hbase时需要修改pom.xml,将protobuf的版本从2.4.0修改为2.5.0
3、将依赖nadoop-core修改为hadoop-common和hadoop-mapreduce-client-core