2011-03-14 48 views
0

我们有一个Hadoop集群(Hadoop 0.20),我想用Nutch 1.2通过HTTP将某些文件导入HDFS,但是我无法让Nutch在集群上运行。在现有的Hadoop集群上运行Nutch

我从$ NUTCH_HOME /斌/ Nutch的脚本更新$ HADOOP_HOME /斌/ Hadoop的脚本到Nutch的jar添加到类路径中(其实我已经复制类路径设置为无,增加了部分在$ NUTCH_HOME/lib目录/ *到classpath),然后我试图运行下面的命令来注入URLS:

hadoop jar nutch*.jar org.apache.nutch.crawl.Injector -conf conf/nutch-site.xml crawl_path urls_path

,但我得到了java.lang.RuntimeException: x point org.apache.nutch.net.URLNormalizer not found.

$ N UTCH_HOME/conf目录/ Nutch的-site.xml中配置文件设置该属性

<property> 
    <name>mapreduce.job.jar.unpack.pattern</name> 
    <value>(?:classes/|lib/|plugins/).*</value> 
</property> 

的解决方法,以迫使/插件目录拆包作为建议:When nutch is run on hadoop > 0.20.2 (or cdh) it will not find plugins because MapReduce will not unpack plugin/ directory from the job's pack (due to MAPREDUCE-967),但似乎对我来说,没有工作。

有没有人遇到过这个问题?你有关于如何在现有Hadoop上运行Nutch的分步教程?

由于提前,
米哈埃拉

回答

0

我跑的Nutch现有的Hadoop集群修改斌/ Nutch的脚本,然后复制在Hadoop的文件夹中的Nutch的配置文件,修改TS和NS参数上。你试过这种方式吗?

+1

不,因为我找到了另一种解决方案。你可以说得更详细点吗?什么是TS和NS参数以及您在hadoop安装时复制了哪些文件,以及您将哪些文件添加到了nutch脚本中?如果我有时间可能我会尝试这种方式。谢谢 – mihaela 2011-03-17 15:46:43

4

最后,我使用bin/hadoop脚本运行Nutch MapReduce作业(喷油器,发电机和Fetcher),并且对Nutch没有任何修改。

问题是与org.apache.hadoop.util.RunJar类(调用hadoop jar <jobfile> jobClass时运行在Hadoop作业罐子类),从工作的jar文件添加到classpath只有classes/lib/子目录和Nutch的工作有一个plugins子也该containes插件在运行时使用。我试着重写属性mapreduce.job.jar.unpack.pattern为值(?:classes/|lib/|plugins/).*,这样RunJar类也将插件添加到类路径中,但它不起作用。

在看过Nutch代码后,我看到它使用属性plugin.folders控制哪里可以找到插件。所以我所做的工作就是将plugins子文件夹从作业jar复制到共享驱动器,并在每次运行Nutch作业时将属性plugin.folders设置为该路径。例如:

hadoop jar <path to nutch job file> org.apache.nutch.fetcher.Fetcher -conf ../conf/nutch-default.xml -Dplugin.folders=<path to plugins folder> <segment path> 

conf/nutch-default.xml文件我都喜欢设置代理名称,代理主机和端口,超时,限制的内容等一些性质

我也曾尝试创建Nutch的工作罐子与lib子文件夹中的插件子文件夹,然后将plugin.folders属性设置为值lib/plugins,但它不工作....

相关问题