기본 콘텐츠로 건너뛰기

라벨이 DataImport인 게시물 표시

[SolrCloud] SolrCloud 환경에 DataImport 사용하기 (Schedule 작업 포함)

Notes DataImport 처리에 대해서 처음 접하는 경우는 아래와 같은 정보를 사전에 검토해야 한다. DataImport 처리를 처음 구성하는 경우는 이미 많은 정보들이 존재하므로 찾아서 검토를 하고, DataImport 와 관련된 다음의 정보를 검토해야 한다. DataImport 처리할 때 주의할 점 DataImport 에서 last_index_time 의 의미와 사용법 Quartz Schedule 을 이용한 DataImport 작업 수행 그리고 실제 작업을 진행하면서 만났던 오류를 기준으로 정리한 것으로 다른 원인과 다른 오류가 더 많을 수 있으므로 Solr관련 정보를 확인해야 한다. DataImport on SolrCloud 단일 서버에 구성했던 Solr 로 DataImport 를 처리하는 것과 동일하게 처리하면 된다. 아래는 기존 샘플 에서 사용했던 Collection 을 대상으로 DataImport (Full-Import) 를 처리하는 명령이다. http: / /localhost:7070/solr /test-collection/dataimport ?command=full-import&clean= true &commit= true 단, 차이점이라면 Solr Admin UI 에서 처리하는 “DataImport” 는 Collection name 을 이용하는 것이 아니라 실제 Core 를 사용한다는 점이다. 예를 들면 다음과 같은 명령이 호출된 것과 같다. http: / /localhost:7070/solr /test-collection_shard1_replica1/dataimport ?command=full-import&clean= true &commit= true 명령을 처리하는 방식 (Request or Admin UI) 의 차이를 제외하면 기존 방식과 동일하게 처리하면 된다. Problems dataimport.p

[ SOLR ] DataImport 에서 last_index_time 의 의미와 사용법

  Solr 의 Data Import 는 다양한 데이터 소스에서 데이터를 Solr 의 문서로 변환하여 Index를 구성하기 위한 도구로 Full / Delta Import 처리가 존재한다. Full Import - 일반적으로 기존 문서들을 삭제 (Clean) 하고 새롭게 문서들을 구성하는데 사용한다. Delta Import - 마지막으로 처리된 Full / Delta Import 시점 (last_index_time) 부터 추가/변경/삭제 되 데이터를 처리하는데 사용한다. (Non clean)   last_index_time 은 위 두가지 import 에서 유용하게 사용될 수 있다. 이제 의미를 알아 보도록 하자. last_index_time 은 어떤 값일까?   Solr 의 DataImportHandler (이하 DIH) 는 동작한 Import 작업에 대한 최종 설정 값 (last_index_time) 정보를 conf 경로에 “dataimport.properties” 라는 파일에 저장 을 한다. 저장되는 단위는 db-data-config.xml 에 지정된 Entity 단위로 기록 하게 된다. 그리고 entity와 상관없는 last_index_time 이 존재해서 동작한 시간을 추가로 기록하고 있다. 테스트 결과 delta-import 에서 이 값을 사용하는 것을 확인하였다. 아래는 실제 구성된 정보를 보여주는 것이다. [ SolrHome / Core / conf / dataimport.properties 의 내용] #Wed Dec 17 16:02:58 KST 2014 test.last_index_time=2014-12-17 15:51:59 test2.last_index_time= 2014-12-17 15:59:24 last_index_time= 2014-12-17 15:59:24   여기서 중요한 것은 last_index_time 이라는 값 (timestamp) 이 어떤 값인지에 대한 것이다. 결론

[ SOLR] Quartz Schedule 을 이용한 DataImport 작업 수행

   구글 코드 및  GitHub  등  Solr Data Import  관련된 오픈 소스들이 많다  .  물론  Quartz 를 이용한 스케줄러에 대한 것도 많이 존재한다  .  지금 정리하는 내용은  GitHub 에 존재하는 사이트를 기준으로 했고 ,  이 사이트는  Google Code  의 소스를 기반으로 해서 확장 (?) 한 것으로 보인다 .  사용한 코드도 소스를 적용할 환경과 요구에 맞도록 변경해서 사용한 것이기 때문에 실제 사이트에서 제시하고 있는 내용과는 다를 수 있다 .  물론 설정 방법은 동일하게 사용한다 . Scheduler  관련 사이트들    스케줄러 기능을 사용하기 위해서는 다음과 같은 구성요소가 필요하다 . Solr DataImport Scheduler   ( 원본 참조 경로 ) Quartz Job Scheduler Apache HttpClient Scheduler  설치와 구성    설치와 구성은 다음과 같이 설정하면 된다 .   DataImportScheduler-0.0.1.jar  파일을  Solr  설치 서버  ( 주로 톰캣 ) 의 클래스패스  ( 별다른 설정이 없다면  WEB-INF/lib)  에 복사한다 .  구동에 필요한 배포 대상  Jar  들은 아래와 같다 . Quartz-2.2.1.jar Quartz-jobs-2.2.1.jar Fluent-hc-4.3.2.jar jta-1.1.jar 당연한 것이지만 , Solr, Lucene, Http, slf4j  등의 관련  Jar  들은 이미 구성된  Solr  서버에 존재하므로    빠진 부분만 추가로 배포하면 된다 .   웹 설정  ( 별다른 설정이 없다면  WEB-INF/web.xml)  에 다음과 같이 리스너를 설정한다 . Solr  서버의  ServletContextListener 를 상속하여  Context  가 초기화 및 제거 될 때  Quartz Scheduler 를  On/Off  처