하둡 기반 크롤러와 Graphlite 페이지랭크 구현
본 논문은 대규모 웹 크롤링과 실시간 페이지랭크 계산을 위해 Hadoop MapReduce 기반 분산 크롤러와 GraphLite 동기식 그래프 연산 프레임워크를 설계·구현한 방법을 제시한다. 크롤러는 URL 분배, 중복 제거, 페이지 저장을 Map/Reduce 단계로 나누어 클러스터 전역에서 병렬 처리하고, 신규 페이지에 대해 GraphLite를 이용해 페
초록
본 논문은 대규모 웹 크롤링과 실시간 페이지랭크 계산을 위해 Hadoop MapReduce 기반 분산 크롤러와 GraphLite 동기식 그래프 연산 프레임워크를 설계·구현한 방법을 제시한다. 크롤러는 URL 분배, 중복 제거, 페이지 저장을 Map/Reduce 단계로 나누어 클러스터 전역에서 병렬 처리하고, 신규 페이지에 대해 GraphLite를 이용해 페이지랭크를 동기식 반복 연산으로 빠르게 업데이트한다. 실험 결과, 단일 서버 대비 처리량과 응답 시간이 크게 향상됨을 확인하였다.
상세 요약
이 논문은 현재 검색 엔진 인프라에서 가장 비용이 많이 드는 두 모듈, 즉 웹 크롤러와 페이지랭크 계산기에 초점을 맞추어 분산 컴퓨팅 환경에서의 효율적 구현 방안을 탐구한다. 먼저 크롤러 설계에서는 Hadoop의 MapReduce 모델을 활용해 URL 큐를 HDFS에 저장하고, Mapper 단계에서 URL을 추출·필터링한 뒤, Reducer에서 중복 URL을 제거하고 실제 페이지를 다운로드한다. 이 과정은 데이터 로컬리티를 극대화하고, 네트워크 I/O를 최소화함으로써 대규모 웹 페이지 수집에 적합한 구조를 만든다. 또한, 작업 실패 시 Hadoop의 자동 재시도 메커니즘을 이용해 내결함성을 확보한다는 점이 장점이다. 그러나 MapReduce는 배치 처리에 최적화돼 실시간성 요구가 높은 상황에서는 지연이 발생할 수 있다. 논문에서는 크롤링 주기를 몇 분 단위로 설정해 실시간 요구를 완화했지만, 보다 낮은 레이턴시가 필요할 경우 Spark Streaming이나 Flink와 같은 스트리밍 프레임워크와의 혼합 사용이 고려될 수 있다.
페이지랭크 계산 부분에서는 GraphLite라는 동기식 BSP(Barrier Synchronization Parallel) 기반 그래프 연산 엔진을 선택했다. GraphLite는 정점별 상태를 메모리 상에 유지하면서 슈퍼스텝마다 메시지를 교환하고, 모든 워커가 동기화된 뒤 다음 스텝으로 진행한다. 이 방식은 페이지랭크와 같이 반복적인 행렬-벡터 곱 연산에 적합하며, 수렴 조건을 만족할 때까지 동일한 연산을 반복한다. 논문은 신규 페이지가 추가될 때마다 전체 그래프를 재계산하지 않고, 변동된 부분만을 부분 그래프 형태로 삽입·재계산하는 인크리멘털 업데이트 전략을 제안한다. 이는 전체 그래프 규모가 수억 개 정점에 달하더라도 계산 비용을 크게 절감한다는 장점을 제공한다. 다만, 동기식 모델은 워커 간 부하 불균형이 발생하면 전체 진행이 지연되는 “스트래깅” 현상이 있다. 따라서 워크로드 파티셔닝 전략과 정점 재배치 메커니즘이 추가로 필요하다.
전체적으로 논문은 Hadoop과 GraphLite라는 두 개의 오픈소스 프레임워크를 결합해 비용 효율적인 분산 검색 엔진 백엔드를 구현한 점이 의의이다. 하지만 실험 부분이 제한적인 데이터셋과 클러스터 규모에 머물러 있어, 수십만 대의 노드와 수십 억 페이지를 대상으로 한 확장성 검증이 부족하다. 또한, 크롤링 정책(robots.txt 준수, 폴리시 기반 스케줄링)과 페이지랭크 스팸 방지 메커니즘에 대한 논의가 없으며, 이는 실제 서비스 적용 시 중요한 고려사항이다. 향후 연구에서는 스트리밍 기반 크롤링, 비동기 그래프 연산, 그리고 스팸 탐지를 결합한 통합 프레임워크를 제시함으로써 현재 설계의 한계를 보완할 수 있을 것이다.
📜 논문 원문 (영문)
🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...