在现有的Hadoop集群上运行Nutch

时间:2011-03-14 17:07:38

标签: hadoop cluster-computing nutch

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

我已经更新了 $ HADOOP_HOME / bin / hadoop 脚本,将Nutch jar添加到类路径中(实际上我已经从 $ NUTCH_HOME / bin / nutch <复制了类路径设置/ b>没有将$ NUTCH_HOME / lib / *添加到类路径的部分的脚本)然后我尝试运行以下命令来注入URL:

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.

$ NUTCH_HOME / conf / nutch-site.xml 配置文件设置属性

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

作为强制解压缩/ plugin目录的解决方法,如: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的分步教程?

提前致谢,
米哈埃拉

2 个答案:

答案 0 :(得分:4)

最后,我使用bin / hadoop脚本运行了Nutch MapReduce作业(Injector,Generator和Fetcher),没有对Nutch进行修改。

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

在查看Nutch代码后,我看到它使用了一个属性plugin.folders来控制插件的位置。所以我所做的工作就是将插件子文件夹从作业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文件中,我设置了一些属性,如代理名称,代理主机和端口,超时,内容限制等。

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

答案 1 :(得分:0)

我在现有的hadoop集群上运行Nutch,修改bin / nutch脚本,然后在hadoop文件夹上复制nutch配置文件,修改TS和NS参数。你这样试试吗?