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

posted on 2015-01-16 20:18  逍遥花生  阅读(885)  评论(1编辑  收藏  举报

导航