'212.Heritrix_설정파일/07. FRONTIER'에 해당되는 글 2건

  1. 2016.08.03 [Heritrix/crawler-beans.cxml]uriUniqFilter
  2. 2016.08.03 [Heritrix/crawler-beans.cxml]frontier

UriUniqFilter

  • frontier가 이미 발견된 URI를 기록하기 위해 사용하는 filter

기존 설정 값

<!-- URI UNIQ FILTER: Used by frontier to remember already-included URIs --> 
 <bean id="uriUniqFilter" 
   class="org.archive.crawler.util.BdbUriUniqFilter">
 </bean>


'212.Heritrix_설정파일 > 07. FRONTIER' 카테고리의 다른 글

[Heritrix/crawler-beans.cxml]frontier  (0) 2016.08.03
Posted by Righ
,

Frontier

  • 대기중인 URI들을 가지고 있는 여러 queue 사용을 기반으로 한다. 하나의 database에 모든 queue들을 맵핑하는 memory map 방식을 사용하며, 모든 queue는 round-robin 방식으로 관리된다.
    frontier는 budgeting 방식을 사용하여 queue의 life cycle을 관리한다. https://webarchive.jira.com/wiki/display/Heritrix/Frontier+queue+budgets 참조

기존 설정 값

 <bean id="frontier" class="org.archive.crawler.frontier.BdbFrontier">

   <property name="queueTotalBudget" value="-1" /> 

   <property name="balanceReplenishAmount" value="3000" /> 

   <property name="errorPenaltyAmount" value="100" />

   <property name="precedenceFloor" value="255" /> 

   <property name="queuePrecedencePolicy">

        <bean class="org.archive.crawler.frontier.precedence.BaseQueuePrecedencePolicy" />

       </property> 

   <property name="snoozeLongMs" value="300000" /> 

   <property name="retryDelaySeconds" value="900" /> 

   <property name="maxRetries" value="30" /> 

   <property name="recoveryLogEnabled" value="true" /> 

   <property name="maxOutlinks" value="6000" /> 

   <property name="extractIndependently" value="false" /> 

   <property name="outbound">

        <bean class="java.util.concurrent.ArrayBlockingQueue">

         <constructor-arg value="200"/>

         <constructor-arg value="true"/>

        </bean>

       </property> 

   <property name="inbound">

        <bean class="java.util.concurrent.ArrayBlockingQueue">

         <constructor-arg value="40000"/>

         <constructor-arg value="true"/>

        </bean>

   </property> 

   <property name="dumpPendingAtClose" value="false" /> 

 </bean>

  • [property에 대한 설명]
    1. queueTotalBudget : queue가 active 상태일 때 소비한 balance의 총합이 이 설정 값을 초과하면 retired 상태로 변환된다.
    2. balanceReplenishAmount : queue가 in-active 상태에서 active 상태로 변환될 때 새로 balance를 충전 받는 값이다.
    3. errorPenaltyAmount : error fetch가 발생할 경우 이 설정 값 만큼 총 expenditure에 포함한다. budget penalty.
    4. precedenceFloor : 이 설정값 아래의 우선순위를 가진 queue는 크롤링 되지 않는다.
    5. queuePrecedencePolicy : queue의 우선순위를 결정할 정책 설정
      1. BaseQueuePrecedencePolicy : 모든 queue에 일정한 상수 값의 우선순위를 적용한다.
    6. snoozeLongMs : queue가 이 설정값보다 snooze 기간이 길어지면 short snooze상태가 아닌 long snooze 상태로 교체된다. long snooze 상태의 queue는 memory에서 disk로 swap 될 수 있다.
    7. retryDelaySeconds : 특정 URI에 대한 크롤링을 retry 할 때, retry 시 발생할 수 있는 문제들을 피하기 위해 retry 전에 delay를 둔다.
    8. maxRetries : 최대 retry 횟수.
    9. recoveryLogEnabled : 크롤링 도중 crash가 발생하였을 경우, crash 된 대략적인 상황을 재구성 할 수 있도록 하는 logs 디렉토리 안에 frontier.recovery.gz 파일을 남길 것인지에 대한 여부.
    10. maxOutlinks : 한 페이지에서 추출할 link 최대 개수
    11. extractIndependently : 이 값이 true이면 다른페이지에서 이미 추출한 URI는 추출하지 않는다.
    12. outbound : outbound queue의 종류를 설정하고 세팅.
      1. ArrayBlockingQueue : (http://egloos.zum.com/oniondev/v/558949 [Java] BlockingQueue의 종류와 용법 참고)
        - 고정배열에 일반적인 Queue를 구현한 클래스, 생성 후 크기변경 불가
        - 꽉찼을때 추가 시 block, 비었을때 추출 시 block
        - 선택적으로 공평성 정책을 두어 block한 thread들의 순차적 대기열(FIFO) 생성
        (대기열 처리에 대해 정확한 순서 보장 X, 공평성 따짐 - throughput 감소되나 variability를 줄이고 starvation을 해소한다.)
        - 첫번째 argument는 queue의 capacity를 설정하고, 두번째 argument는 block 되었던 thread가 FIFO 순서로 access 할 지에 대한 여부.
    13. inbound : inbound queue의 종류를 설정하고 세팅.
      1. ArrayBlockingQueue : outbound 참조
    14. dumpPendingAtClose : 크롤링이 끝날 때 대기 상태의(pending) URI들을 crawl.log에 덤프를 남긴다.


'212.Heritrix_설정파일 > 07. FRONTIER' 카테고리의 다른 글

[Heritrix/crawler-beans.cxml]uriUniqFilter  (0) 2016.08.03
Posted by Righ
,