nutch 1.4 의 증분 오 르 기 (recrawl) 스 크 립 트
3628 단어 파충류 와 수색
먼저 최신 소식: nutch 1.5 발표!tika 1. 1 과 hadop 1.0 으로 바로 올 라 가 야 합 니 다. 이제 더 놀아 야 합 니 다.
그런데 방금 봤 는데 nutch 가 1.5 까지 발표 되 더 라 도 기본적으로 증분 기어 오 르 는 스 크 립 트 를 제공 하지 않 았 습 니 다.nutch 의 공식 위 키 에는 Susam Pal 이 쓴 recrawl 스 크 립 트 (http://wiki.apache.org/nutch/Crawl), 하지만 그 스 크 립 트 는 직접 사용 할 수 없습니다. 왜냐하면:
본문
nutch 1.2 및 이전 버 전에 비해 nutch 1.3 + 에서 많은 명령 의 인자 가 바 뀌 었 습 니 다. 예 를 들 어 fetch 명령 은 더 이상 - noParsing 인 자 를 분석 하지 않 습 니 다.
우선 이 스 크 립 트 의 기능 요구 사항 을 말씀 드 리 겠 습 니 다.
#!/usr/bin/env bash
# recrawl script to run the Nutch bot for crawling and re-crawling.
# Usage: bin/recrawl
# Author: Joey (base on Susam Pal's work)
if [ $# != 3 ]
then
echo "Usage: recrawl DATADIR URLDIR SOLRSERVERADDRESS"
echo "where "
echo " DATADIR is the parent directory where crawled data will be stored "
echo " URLDIR is the parent directory of the injected url files "
echo " SOLRSERVERADDRESS is the address of solr index server "
echo "eg: recrawl hdfs://localhost:9000/user/root/crawleddatadir \
hdfs://localhost:9000/user/root/crawledurldir http://localhost:8983/solr"
exit 1
fi
# Crawl options
depth=3
threads=64
topN=128
# Temp segments dir in Hadoop DFS
TEMPSEGMENTSDIR="tmpsegmentsdir"
# Arguments for hadoop dfsshell ls/cp/rm/mv command
LSCOMMAND="hadoop fs -ls"
RMCOMMAND="hadoop fs -rmr"
CPCOMMAND="hadoop fs -cp"
MVCOMMAND="hadoop fs -mv"
if [ -z "$NUTCH_HOME" ]
then
NUTCH_HOME=.
echo recrawl: $0 could not find environment variable NUTCH_HOME
echo recrawl: NUTCH_HOME=$NUTCH_HOME has been set by the script
else
echo recrawl: $0 found environment variable NUTCH_HOME=$NUTCH_HOME
fi
for((j=0;j>-1;j++))
do
# "----- See if it will go on to crawl -----"
for switch in `cat $NUTCH_HOME/bin/recrawlswitcher`
do
break
done
if [ $switch == "off" ]
then
echo "--- Shut down the recrawl due to recrawl swithcher is off ---"
break
fi
echo "--- Beginning at count `expr $j + 1` ---"
steps=6
echo "----- Inject (Step 1 of $steps) -----"
$NUTCH_HOME/bin/nutch inject $1/crawldb $2
echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----"
for((i=0;i
이 스 크 립 트 는 며칠 동안 테스트 를 했 는데, 실행 이 비교적 정상적이다.그러나 이 스 크 립 트 는 계속 개선 할 수 있 습 니 다. 예 를 들 어: