아파치 너치(Apache Nutch) 소개
아파치 너치(Apache Nutch)의 사용에 앞서 특징과 역사에 대해 알아보도록 하겠습니다.
Apache Nutch
Apache Nutch는 웹 사이트 크롤링(crawling)을 위한 오픈 소스 웹 크롤러 소프트웨어 프로젝트이며 아파치 루씬 (Apache Lucene)을 근간으로 만들어졌고 다양화되어 발전해왔습니다. Nutch는 검색시 애플리케이션 페이지의 rank를 높이고 필요에 따라 커스터마이징할 수 있는 자체 검색 엔진을 제공하며 뛰어난 확장성(extensible and scalable)을 제공합니다. 이를 활용하면 구글과 같은 검색 엔진을 만들 수 있습니다.
Nutch는 확장성을 통해 플러깅이 가능(pluggable)하고 모듈화 된 것이 장점이기 때문에 Parse, Index 및 ScoringFilter와 같은 확장 가능한 인터페이스를 제공합니다. (ScoringFilter는 Apache Nutch 플러그인을 만드는데에 사용되는 java class) 또한 파싱을 위한 Apache Tika, Apache Solr, Elastic Search 등의 플러그 타입의 색인도 함께 포함하고 있습니다.
Solr의 경우 Nutch와 쉽게 통합이 가능한데 Solr에 Nutch에 의해 크롤링되는 모든 웹 페이지를 색인 처리 할 수 있습니다. 이렇게 색인 처리된 웹 페이지에 대해서 Solr를 사용하여 검색에 활용할 수도 있습니다. (Apache Solr는 Apache Lucene 기반으로 구축된 검색 플랫폼)
현재는 다음과 같이 두 개의 코드베이스로 구성되어 있습니다.
- Nutch 1.x : 일괄 처리와 세밀한 구성이 가능하며 Apache Hadoop 데이터 구조에 의존하는 batch processing에 적합한 모델입니다.
- Nutch 2.x : 1.x 버전에서 영감(inspiration)을 받은 새로운 대안 모델이며, Apache Gora의 Object에 대한 지속적인 맵핑 처리를 통해 어떠한 특정 데이터 저장소에서도 추상화가 가능하도록 해줍니다. 이것은 모든 NoSQL 스토리지 솔루션에 모든 것(시간, 상태, 내용, 구문 분석 된 텍스트, 아웃 링크, 인 링크 등)을 저장하기위한 매우 유연한 모델 및 스택을 구현할 수 있음을 의미합니다.
다음은 Apache Nutch의 공식 사이트입니다.
Apache Nutch의 역사
Nutch는 Lucene과 Hadoop의 제작자인 Doug Cutting과 Mike Cafarella와 함께 시작되었습니다. 2003년 6월, 1억 페이지에 달하는 성공적인 데모 시스템이 개발되었고, Nutch 프로젝트는 크롤링 및 색인 작업의 다중 머신 처리 요구를 충족시키기 위해 Map Reduce 기능과 분산 파일 시스템을 구현했습니다. 이 두 시스템은 하둡(Hadoop)이라는 자체 하위 프로젝트로 만들어졌습니다.
2005년 1월 Nutch는 아파치 인큐베이터(Apache Incubator)에 합류하여 그 해 6월 Lucene의 하위 프로젝트가 되었습니다. 2010년 4월부터 Nutch는 Apache Software Foundation의 독립적인 최상위 프로젝트로 간주되었고, 2014년 2월에 Common Crawl 프로젝트는 대규모의 공개적인 웹 크롤링을 위해 Nutch를 채택했습니다.
한 때는 Nutch 프로젝트가 글로벌 대형 웹 검색 엔진을 출시하는 것이 목표였지만 현재는 그렇지 않고 독립 프로젝트로 남아있습니다.
버전별 release date는 다음과 같습니다.
- 1.1 : 2010년 6월 6일
- 1.2 : 2010년 10월 24일
- 1.3 : 2011년 6월 7일
- 1.4 : 2011년 11월 26일
- 1.5 : 2012년 6월 7일
- 1.5.1 : 2012년 7월 10일
- 1.6 : 2012년 12월 6일
- 1.7 : 2013년 6월 24일
- 1.8 : 2014년 3월 17일
- 1.10 : 2015년 5월 6일
- 1.11 : 2015년 12월 7일
- 2.0 : 2012년 7월 7일
- 2.1 : 2012년 10월 5일
- 2.2 : 2013년 6월 8일
- 2.2.1 : 2013년 7월 2일
- 2.3 : 2015년 1월 22일
· 투명성
상용 검색엔진의 경우 ranking 엔진과 관련된 부분은 완전히 감추어져 있는데(랭킹과 관련된 기본적인 알고리즘만 공개되어 있음) Apache Nutch는 오픈 소스이며 검색 엔진의 가장 중요한 부분이기도한 랭킹 알고리즘과 그 구현이 완전히 공개되어 있습니다. 또한 학습용 혹은 공공단체등에서 사용되는 정보의 중요도를 체크하기 위한 좋은 솔루션입니다.
· 쉬운 이해도
검색엔진과 관련된 다양한 이론들을 포함하고 있는데 여기엔 distribute processing model로 사용되는 Map Reduce와 같은 것들을 포함하고 있습니다. (Map Reduce는 Google 연구소에서 개발된 대량 Data Processing 엔진) 이외에도 Nutch는 최근에 연구되어지고 있는 검색 알고리즘을 적용하고 테스트하기 위한 시도를 지속적으로 진행하고 있으며, 관련된 이론적인 지식을 알고 있다면 쉽게 접근하고 이해할 수 있습니다.
· 확장성
다른 검색 엔진들은 대부분 해당 검색 엔진에 맞게 특화되어 있으며, 내부가 감추어져 있기 때문에 검색 엔진에 맞는 환경이 아닌 경우 확장이 어렵거나 불가능한 경우가 많습니다. 반면에 Nutch는 일반적인 검색 엔진을 구현하고 있으며, 소스가 공개되어 있기 때문에 쉽게 확장이 가능합니다.
Apache Nutch Process Cycle
- 새로운 WebDB를 생성한다.
- WebDB로 부터 수집이 최초로 시작될 root URL을 설정한다.
- 새로운 segment의 WebDB로 부터 fetchlist를 생성한다.
- fetchlist의 URL로부터 page를 수집한다.
- 수집된 page로 부터 링크를 얻어오고, WebDB의 정보를 갱신한다.
- 3 ~ 5단계를 계속 반복한다.
- 중요도와 links정보를 Update한다.
- 수집한 페이지의 색인을 만든다.
- 색인으로 부터 중복된 페이지를 제거한다.
- 효율적 검색을 위해서 단일 색인들을 병합한다.
이상으로 Apache Nutch의 특징과 역사에 대해서 알아보았습니다.
※ 참고 문헌
Abdulbasit Shaikh, Zakir Laliwala, 『Web Crawling and Data Mining with Apache Nutch』, Packt Publishing(2013)
www.joinc.co.kr, 아파치 너치, https://www.joinc.co.kr/w/Site/Search/Document/nutch
- wikipedia, apache nutch, https://en.wikipedia.org/wiki/Apache_Nutch
- wiki.apache.org, apache nutch, https://wiki.apache.org/nutch/