다음 <보기>의 조건에서 조인(Join) 작업의 성능을 개선하기 위한 방안으로 가장 적절한 것은?
보기
어느 이커머스 기업이 하둡 클러스터(데이터 노드 40대, 노드당 가용 메모리 32GB)에서 두 데이터 세트를 회원ID로 결합하고 있다.
| 데이터 세트 | 크기 | 레코드 수 |
|---|---|---|
| 회원 마스터 | 약 600MB | 약 1,200만 건 |
| 주문 로그 | 약 4TB | 약 80억 건 |
현재는 두 데이터를 모두 맵 출력으로 내보낸 뒤 리듀스 단계에서 결합하고 있는데, 셔플 구간의 네트워크 전송량이 병목이 되어 작업 시간이 6시간을 넘고 있다. 결과의 정확성은 그대로 유지해야 한다.
- 1리듀서 개수를 40개에서 400개로 늘려 리듀서 한 대가 처리하는 데이터의 양을 줄인다.
- 2주문 로그에 대해 합계와 건수를 먼저 계산하는 컴바이너(Combiner)를 조인 단계에 적용한다.
- 3회원 마스터를 각 노드의 분산 캐시에 배포해 맵 단계에서 결합을 끝내는 맵 사이드 조인(Map-side Join)으로 전환한다.
- 4두 데이터 세트를 모두 회원ID 기준으로 정렬한 뒤, 정렬 결과를 리듀서로 다시 셔플하여 병합 조인을 수행한다.
꿈라CBT