我们有一个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的分步教程?
提前致谢,
米哈埃拉
答案 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参数。你这样试试吗?