최초 작성일 : 2013/04/23 12:47 


지금까지의 MapReduce 사용에 있어 가장 주목할만한 점 한가지는 구글의 웹 검색 서비스에 사용되는
데이터 구조를 생성하는 production indexing 시스템을 완전히 다시 작성했다는 것이다.
indexing 시스템은 우리의 crawling 시스템이 검색해오는 대량의 문서 셋을 입력값으로 받아
GFS 파일 셋으로 저장한다. 이러한 문서 셋의 원본 내용들은 20 테라바이트 이상의 데이터들이다.
indexing 수행은 5개에서 10개 정도의 MapReduce 업무가 순차적으로 진행되면서 이루어진다.
(이전 버전의 indexing 시스템에서 ad-hoc distributed passes를 사용하는 대신에)MapReduce를
이용하는 것은 몇가지 이익을 준다.

• MapReduce 라이브러리 내에 오류(실패) 관리, 분산과 병렬 처리에 대한 코드들이 감춰져있기 때문에
  indexing 코드는 보다 단순하고 작고 이해하기 쉬워진다. 예를 들면 한 단위의 연산을 수행하는
  C++ 코드는 MapReduce로 구현할 겨웅 약 3800라인에서 700라인 정도로 감소한다.
 
• MapReduce 라이브러리는 개념적으로 관련이 없는 연산을 데이터에 대한 추가적인 전달을 회피하기 위해
  뒤섞어 놓는 대신에 서로 분리되도록 유지하는데 충분한 성능을 발휘한다.
  이 것은 indexing 프로세스을 변경하기 쉽게 하였다.
  일례로 예전의 indexing 시스템이 수개월 동안 걸려 처리한 변경작업을 새로운 시스템을 구현하여
  몇일만에 처리하였다.
 
• 머신의 고장, 느려진 머신, 네트워크의 일시적인 중단 등이 작업자의 개입 없이
  MapReduce에서 자동으로 관리되기 때문에 indexing 프로세스는 보다 운영하기 쉬워졌다.
  게다가 indexing 클러스터에 머신을 추가함으로써 indexing 프로세스의 성능을 개선하기도 쉬워졌다.

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^