gpt4 book ai didi

hadoop - 在hadoop模式下运行nutch时不执行nutch gora类

转载 作者:行者123 更新时间:2023-12-02 20:09:46 24 4
gpt4 key购买 nike

当我尝试

hadoop jar apache-nutch-2.2.jar org.apache.nutch.crawl.Crawler crawl -dir crawl -depth 3 -topN 5

我收到以下错误...
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

有人可以帮我解决错误吗?

最佳答案

您对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- *依赖项,因此一种解决方案是使用.job(而不是.jar)将它们发送给Hadoop,而所有依赖项都 bundle 了Hadoop。

如果您有此安装:

~
|- 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:
hadoop jar nutch...jar

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

如果您调用.job,则它的邮政编码中必须包含 lib/gora-core-0.x.jar。 Hadoop解压缩该.job并将 lib/*添加到类路径,因此不需要做任何事情。

关于hadoop - 在hadoop模式下运行nutch时不执行nutch gora类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com