2011-03-14 49 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,但它不工作....

相關問題