首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在hadoop模式下运行nutch时,nutch gora类不会

在hadoop模式下运行nutch时,nutch gora类不会
EN

Stack Overflow用户
提问于 2013-07-09 15:09:26
回答 1查看 633关注 0票数 0

当我尝试的时候

代码语言:javascript
复制
hadoop jar apache-nutch-2.2.jar org.apache.nutch.crawl.Crawler crawl -dir crawl -depth 3 -topN 5

我收到以下错误...

代码语言:javascript
复制
13/07/09 09:02:46 WARN conf.Configuration: nutch-default.xml:a attempt to override final parameter: hadoop.job.history.user.location;  Ignoring.
13/07/09 09:02:46 WARN conf.Configuration: nutch-default.xml:a attempt to override final parameter: hadoop.job.history.user.location;  Ignoring.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/gora/persistency/impl/PersistentBase
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:218)
    at org.apache.nutch.crawl.Crawler.runTool(Crawler.java:68)
    at org.apache.nutch.crawl.Crawler.run(Crawler.java:136)
    at org.apache.nutch.crawl.Crawler.run(Crawler.java:250)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.nutch.crawl.Crawler.main(Crawler.java:257)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.ClassNotFoundException: org.apache.gora.persistency.impl.PersistentBase
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 22 more

有没有人能帮我修复这个错误?

EN

回答 1

Stack Overflow用户

发布于 2013-07-10 01:14:19

你对gora的依赖有问题。当然,apache-nutch-2.2.jar没有org/apache/gora/persistency/impl/PersistentBase.class。您可以使用以下命令进行检查:

jar tf apache-nutch-2.2.jar | grep PersistentBase

检查是否使用Gora 0.3版本编译Nutch。

我猜您的Hadoop节点中没有安装gora-*依赖项,所以一种解决方案是使用绑定了hadoop所有依赖项的.job (而不是.jar)发送它们。

如果您有此安装:

~

- nutch/

*|- apache-nutch-2.2.job

*|- bin/

*|- nutch

PATH=~/nutch/bin:.....

只需使用以下命令即可执行Nutch:

$ nutch inject ...

$ nutch crawl

nutch命令在需要时调用Hadoop。

============已更新==============

令人不快的行:http://grepcode.com/file/repo1.maven.org/maven2/org.apache.nutch/nutch/2.2.1/org/apache/nutch/crawl/InjectorJob.java/#218

============更新2 =============

您正在使用命令行调用Nutch:

代码语言:javascript
复制
hadoop jar nutch...jar

如果这样做,则必须确保gora-core-0.x.jar位于类路径中。

如果调用一个.job,它的压缩文件中必须有lib/gora-core-0.x.jar。Hadoop解压该.job并将lib/*添加到类路径中,因此不需要执行任何操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17542126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档