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), 하지만 그 스 크 립 트 는 직접 사용 할 수 없습니다. 왜냐하면:
  • ta 는 local 에서 nutch 를 실행 하 는 경우 에 만 사용 할 수 있 습 니 다
  • ta 의 검색 은 lucene 기반 이 므 로 solr 를 사용 하여 색인 을 만 들 면 안 됩 니 다
  • lucene 이 색인 을 만 들 면 nutch 1.2 이하 에서 만 사용 할 수 있 습 니 다. nutch 1.3 + 버 전에 서 각 명령 의 매개 변 수 는 변경 되 었 습 니 다
  • 예전 에 공식 적 인 recrawl 스 크 립 트 로 nutch 1.2 의 증 가 를 실현 한 적 이 있 습 니 다.그 동안 nutch 1.4 를 만 들 었 기 때문에 예전 의 recrawl 스 크 립 트 를 바탕 으로 nutch 1.4 + solr 3.4 를 기반 으로 한 스 크 립 트 를 썼 습 니 다. 현재 1master - 9slave 의 hadop 에서 실 행 했 습 니 다. 지금 은 메모 합 니 다.저도 예전 에 여기저기 구 글 스 크 립 트 를 찾 았 지만 찾 지 못 했 습 니 다. 지금 공유 하고 같이 소통 하 며 소중 한 수정 의견 을 제시 해 주세요 ^ ^
    본문
    nutch 1.2 및 이전 버 전에 비해 nutch 1.3 + 에서 많은 명령 의 인자 가 바 뀌 었 습 니 다. 예 를 들 어 fetch 명령 은 더 이상 - noParsing 인 자 를 분석 하지 않 습 니 다.
    우선 이 스 크 립 트 의 기능 요구 사항 을 말씀 드 리 겠 습 니 다.
  • nutch 1.4 가 hadop 클 러 스 터 에서 실행 되 는 것 을 지원 합 니 다. 색인 방식 은 solr
  • 입 니 다.
  • 중복 색인 데이터 양 최소 화
  • hdfs 에 완전한 데이터 유지
  • 일정한 용 착 력
  • 스 크 립 트 는 다음 과 같 습 니 다. (셸 스 크 립 트 능력 이 상당히 부족 하고 못 생 겼 습 니 다)
    #!/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

    이 스 크 립 트 는 며칠 동안 테스트 를 했 는데, 실행 이 비교적 정상적이다.그러나 이 스 크 립 트 는 계속 개선 할 수 있 습 니 다. 예 를 들 어:
  • 현재 generate, fetch 단계 에서 만 반환 값 을 처 리 했 습 니 다. 다음 단 계 는 nutch 의 모든 단계 에서 반환 값 을 판단 하여 해당 하 는 오류 처리
  • 를 해 야 합 니 다.
  • 현재 오류 가 발생 한 것 은 데이터 가 손상 되 지 않도록 하 는 상황 에서 만 종료 되 며, sendmail 등 을 이용 하여 관리자 에 게 경보 메 일
  • 을 보 내야 합 니 다.
  • 실행 할 때 입력 한 매개 변 수 는 유연 하 게 재 조정 할 수 있 습 니 다. 현재 depth, topN, threads 는 스 크 립 트 에서 정의 되 고 datadir, urldir, solraddr 는 매개 변수 로 전달 되 며 이 곳 은 약간 복잡 하여 스 크 립 트 에서 정의 할 수 있 습 니 다
  • 좋은 웹페이지 즐겨찾기