2014-09-19 51 views
0

我无法在Hadoop YARN上为Nutch 1.7运行多个获取Map获取。在Hadoop群集上运行多个Apache Nutch获取地图任务

我正在使用bin/crawl脚本,并进行了以下调整以触发具有多个地图任务的提取,但我无法这样做。

  1. 将maxNumSegments和numFetchers参数添加到生成阶段。 $斌/ Nutch的产生$ commonOptions $ CRAWL_PATH/crawldb $ CRAWL_PATH /段-maxNumSegments $ numFetchers -numFetchers $ numFetchers -noFilter

  2. 删除了TOPN放慢参数并删除了noParsing参数,因为我想解析当时发生的提取。 $斌/ Nutch的取$ commonOptions -D fetcher.timelimit.mins = $ $ timeLimitFetch CRAWL_PATH /分段/ $ SEGMENT -threads $ numThreads#-noParsing#

的生成相位不产生多于一个的段。

因此,获取阶段不会创建多个地图任务,我相信脚本写入它不允许fecth感染多个segemnts,即使生成要生成多个段。

有人能让我知道,他们如何让脚本在分布式Hadoop集群中运行?或者如果有不同版本的脚本应该使用?

谢谢。

回答

0

您是否在使用Nutch 1.xx?在这种情况下,Generator类会查找一个名为“mapred.job.tracker”的标志并尝试查看它是否是本地的。该属性在Hadoop2中已被弃用,并且默认值被设置为本地。您必须将属性的值覆盖为本地以外的值,Generator将为这些段生成多个分区。

0

我最近遇到了这个问题,并认为基于Keith的答案提供关于如何解决此问题的更全面的解释是个好主意。

我已经用Nutch 1.10和Hadoop 2.4.0测试过了。

正如基思所述Generator.java上线542的如果块读取mapred.job.tracker属性和设置为1可变numLists的值,如果属性是local。该变量似乎控制减少任务的数量,并影响地图任务的数量。

改写上述财产在mapred-site.xml修复了这个值:

<property> 
    <name>mapred.job.tracker</name> 
    <value>distributed</value> 
</property> 

(或者你喜欢的,除了local任何其他值)。

问题是这是不够的,在我的情况下,生成多个地图任务。我还必须更新runtime/deploy/bin/crawl脚本中numSlaves参数的值。在Nutch 1中我没有发现任何这个参数。x docs,所以经过一些试验和错误之后,我偶然发现了它。

############################################# 
# MODIFY THE PARAMETERS BELOW TO YOUR NEEDS # 
############################################# 

# set the number of slaves nodes 
numSlaves=3 

# and the total number of available tasks 
# sets Hadoop parameter "mapred.reduce.tasks" 
numTasks=`expr $numSlaves \* 2` 

... 
相关问题