最近在研究nutch框架,本想搭建一个单机版的+mysql,一个分布式的+hbase。
分布式的成功了,版本选择hadoop2.6+hbase0.98+nutch2.3.1
单机版的报错了,网上有说nutch2x不支持mysql的,现在贴出来:
运行 nutch injects urls自动创建表报如下错误,
Exception in thread "main" Java.lang.NoClassDefFoundError: org/apache/avro/ipc/ByteBufferOutputStream
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at org.apache.nutch.storage.StorageUtils.getDataStoreClass(StorageUtils.java:93)
at org.apache.nutch.storage.StorageUtils.createWebStore(StorageUtils.java:77)
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:65)
at org.apache.nutch.crawl.InjectorJob.main(InjectorJob.java:284)
Caused by: java.lang.ClassNotFoundException: org.apache.avro.ipc.ByteBufferOutputStream
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 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 9 more
查看依赖包,下载的是avro版本是1.7.6,查看api,没有在包中发现org.apache.avro.ipc.ByteBufferOutputStream。经过度娘询问得知,nutch2.x的架构与1.x的架构有了很大的变化,2.x的底层架构改为了MR,这样和hadoop的结合更加完美了,而且数据库向Hbase支持,mysql不再支持了。