Nutch2.3 + hbase0.98.8 +hadoop2.5.2

腰间两把刀 发布于 2015/05/24 14:51
阅读 4K+
收藏 0

@杨尚川 你好,想跟你请教个问题:杨老师 实在不好意思,想麻烦你一个问题,困扰了我很久。

我并不是一个智慧伸手要资源的傻瓜,在学习了你相关的nutch视频之后,试着自己去尝试做一些东西。于是根据nutch官网上给出的信息,我选择了最新版的nutch 2.3,因为nutch2.3采用的是gora0.5,所以官网上建议搭配hbase0.94.14和hadoop2.4,而我去了gora官网看了一下,gora最新的版本是0.6,所以我编译nutch2.3的时候将gora hadoop 和hbase 都改成了gora官网上建议的版本。成功编译,我首先部署了hadoop和hbase ,并且也都全部启动(完全分布式,共3台机器)。

可是,当我开心的进入到nutch2.3的runtime/deploy/下 执行 ./bin/nutch  inject urls 时,给出了一个这样的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at org.apache.gora.hbase.store.HBaseStore.initialize(HBaseStore.java:114)
at org.apache.gora.store.DataStoreFactory.initializeDataStore(DataStoreFactory.java:101)
at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:160)
at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:134)
at org.apache.nutch.storage.StorageUtils.createWebStore(StorageUtils.java:78)
at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:218)
at org.apache.nutch.crawl.InjectorJob.inject(InjectorJob.java:252)
at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:275)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.nutch.crawl.InjectorJob.main(InjectorJob.java:284)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 15 more

Nutch官网tutorial2.X给出的的解释是这样的:

N.B. It's possible to encounter the following exception: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration; this is caused by the fact that sometimes the hbase TEST jar is deployed in the lib dir. To resolve this just copy the lib over from your installed HBase dir into the build lib dir. (This issue is currently in progress).

于是 我使用了这个命令cp /$HBASE_HOME/lib/*jar /$NUTCH_HOME/build/ 拷贝到了butch下,仍然不起作用,于是我又将/$HBASE_HOME/lib/*jar拷贝到了/$NUTCH_HOME/lib,第三次运行./bin/nutch  inject urls,还是抛出上述的错误。无奈我求助google,google给出的结果也是很少,基本上解决不了我的问题。所以我很困惑,在这个问题上纠结了很久。鉴于,杨老师对nutch的研究颇为深入,所以向您求助。

希望您百忙中能抽空回答一下,不胜感激!

加载中
0
震秦
震秦

虽然不是问我, 还是回答一下.

需要把 hbase-common-{version}.jar copy 到 nutch 的 lib 目录下.

震秦
震秦
回复 @zhangneww : 把此贴的回复仔细看完, 如果还不能解决问题再问
zhangnew
zhangnew
你好,我用的 hbase 是0.98.14 版本,也是这样呢
Dskys
Dskys
回复 @震秦 : 这个办法可以解决local下面的!分布式的解决不了啊!还有其它建议吗?
震秦
震秦
回复 @1991呆呆 : "所以官网上建议搭配hbase0.94.14和hadoop2.4". hbase-0.94没有针对 hadoop2的. 你既要用 hadoop-2.4需要适配 hadoop-0.96以上的版本(建议0.98以上). 注意,下载 hbase 时有 hbase-{version}-hadoop2的.
1991呆呆
1991呆呆
不行吧,我也遇到了这个问题,该怎么解决?
0
woxi内特
woxi内特
请问楼主解决了吗?我是跟你相同的问题。
woxi内特
woxi内特
回复 @Dskys : 按@震秦那样做了之后,出现另外的错:Error: Found interface org.apache.hadoop.mapreduce.Counter, but class was expected,估计又是版本冲突。。。。你那样做了之后就解决了?
Dskys
Dskys
回复 @震秦 : 非常感谢你!解决了该问题
震秦
震秦
回复 @woxi内特 : Hadoop 集群模式, 直接把 HBase 相关 jar 直接放到 ${Hadoop_home}/share/hadoop/mapreduce/ 下. 重启 Hadoop
Dskys
Dskys
回复 @woxi内特 : 搞定了没有!我也遇到了
woxi内特
woxi内特
我的nutch版本为2.3,hadoop版本为2.5.2,hbase版本为0.98.11。集群模式。这个问题困扰了我几个月。。
0
Dskys
Dskys
楼主解决了没有
0
腰间两把刀
腰间两把刀
我是楼主,已放弃使用此框架。改用pyhon相关框架
wffger
wffger
现在换成什么框架了?
zhangnew
zhangnew
大哥,杨尚川的视频是13年的那个吧,这时候还能问得到?我也是同样的问题。唉。
0
woxi内特
woxi内特
回复 @Dskys : 表示改了hadoop-core为hadoop-common,OK了,但是现在在抓取页面的时候遇到下边这个问题java.lang.ClassNotFoundException: Class org.apache.gora.mapreduce.StringSerialization not found,不知道org.apache.gora.mapreduce在哪个jar包里啊!!!
0
zhangnew
zhangnew
Hadoop 集群模式, 直接把 HBase 相关 jar 直接放到 ${Hadoop_home}/share/hadoop/mapreduce/ 下. 重启 Hadoop    @震秦  说的是正解,谢谢。
0
癞头僧
一样的问题 卡住很久了
0
realcalu
realcalu

在local/bin下报该错:

像官网说的那样将hbase/lib 下面的*.jar 复制到nutch/runtime/local/lib下

在deploy/bin下报该错:

将Hbase/lib 下面的*.jar 复制到 hadoop/share/hadoop/mapreduce下

0
BellaP
BellaP

同志们,本人诚招大数据架构师,如有您考虑或者身边有人考虑请联系我,谢谢!

职位base上海不出差,外企加班少,灵活,自由,要英语,具体要求可以看我发布的职位!

返回顶部
顶部