【问题标题】:Nutch updatedb killed and skipped batch idsNutch updatedb 杀死并跳过了批次 ID
【发布时间】:2012-08-26 00:28:07
【问题描述】:

我正在使用 nutch 2.0 和 solr 4.0,但成功率最低我有 3 个 url,并且我的 regex-urlfilter.xml 设置为允许一切。 我运行了这个脚本

#!/bin/bash

# Nutch crawl

export NUTCH_HOME=~/java/workspace/Nutch2.0/runtime/local

# depth in the web exploration
n=1
# number of selected urls for fetching
maxUrls=50000
# solr server
solrUrl=http://localhost:8983

for (( i = 1 ; i <= $n ; i++ ))
do

log=$NUTCH_HOME/logs/log                                                                                                                                                           

# Generate
$NUTCH_HOME/bin/nutch generate -topN $maxUrls > $log

batchId=`sed -n 's|.*batch id: \(.*\)|\1|p' < $log`

# rename log file by appending the batch id
log2=$log$batchId
mv $log $log2
log=$log2

# Fetch
$NUTCH_HOME/bin/nutch fetch $batchId >> $log

# Parse
$NUTCH_HOME/bin/nutch parse $batchId >> $log

# Update
$NUTCH_HOME/bin/nutch updatedb >> $log

# Index
$NUTCH_HOME/bin/nutch solrindex $solrUrl $batchId >> $log

done
----------------------------

当然,我在运行脚本之前 bin/nutch 注入了 url,但是当我查看日志时,我看到 Skipping : different batch id 和一些我看到的 url 不在 seed.txt 和我想包括他们 进入 solr,但没有添加它们。 我的 seed.txt 中有 3 个网址

运行此脚本后,我尝试过 bin/nutch parse -force -all bin/nutch updatedb bin/nutch solrindex http://127.0.0.1:8983/solr/sites -reindex

我的问题如下。 1. 最后三个命令为什么它们是必要的? 2.如何在解析作业期间获取所有 url,即使使用 -force -all 我仍然会跳过不同的批次 id 3. 上面的脚本,如果我将 generate -t​​opN 设置为 5。这是否意味着如果一个站点有一个链接到另一个站点到另一个站点到另一个站点到另一个站点到另一个站点到另一个站点。它将包含在获取/解析周期中吗? 4. 这个命令呢,为什么还要提到这个: bin/nutch crawl urls -solr http://127.0.0.1:8983/solr/sites -depth 3 -topN 10000 -threads 3. 5. 当我运行 bin/nutch updateb 时,它需要 1-2 个 mineuts 然后它回显 Killed。这让我很担心。请帮忙。

是的,我已经阅读了很多关于 nutch 和 solr 的页面,并且我已经尝试了数周来解决这个问题。

【问题讨论】:

    标签: solr nutch


    【解决方案1】:

    我看到的一些 URL 不在 seed.txt 中

    我认为这是由于 URL 规范化而发生的。 Nutch 执行此 URL 规范化,因此原始 URL 被更改或转换为更标准的格式。

    #1:您注入然后执行了 generate-fetch 阶段...对吗?您问题中的这 3 个阶段是解析爬网数据、使用新发现的页面更新数据库并分别索引它们所必需的。

    #2:抱歉,我没听懂你的问题。

    对于 #3: 否。topN 设置为 5 意味着 nutch 将从 while 一组符合提取条件的 URL 中选择前 5 个 URL。它将仅考虑这些选定的高分 URL 进行提取。

    #4: 这是一个自动调用所有 nutch 阶段的命令。因此,您不必为每个阶段手动执行单独的命令。只需一个命令,它就可以完成所有工作。

    #5: hadoop 日志中会记录一些异常。提供堆栈跟踪和错误消息,以便我对其发表评论。没有那个我什么都想不出来。

    【讨论】:

    • 这可能对问题 5 有所帮助,我在只有 618 MB RAM 的服务器上运行它
    • 那么您很有可能面临 OOM。
    • @peter 需要解析爬取的数据。它可以通过运行单独的解析命令或设置一个配置来完成,使解析能够在获取阶段本身完成。
    • @TejasP 如何运行单独的解析命令?我正在使用上面的脚本来爬取 2 个站点。默认文件显示“自 2.0 起,此设置为 false 作为更安全的默认设置”,那么将其设置为 true 不会引起问题吗?解析命令似乎跳过了很多 url,它增加了每个生成/获取/解析/更新周期的时间。获取时间约为 10 到 15 分钟,其余 20 分钟用于生成、解析和更新。我怎样才能使获取连续并在更小的时间范围内获取更多数量的 url(运行另一个脚本或更改 nutch 2.1 中的某些设置)?
    • @peter :将 "fetcher.parse" 设置为 true,以便解析与获取一起发生。这应该可以节省整个 nutch 爬行周期的时间。
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多