Page 17 -
P. 17
으로 등장했다. 이 도구들은 각기 다른 요구 사항을 하둡에 부가해 환경을 더욱 복잡하게 만들었 1
다. 스파크는 하둡의 이러한 문제들을 상당 부분 해결했다. 아파치 스파크 소개
1.1.3 스파크가 가져다준 선물
스파크의 핵심은 맵리듀스처럼 잡에 필요한 데이터를 디스크에서 매번 가져오는 대신, 데이터를
메모리에 캐시로 저장하는 인-메모리 실행 모델에 있다. 스파크는 동일한 작업을 맵리듀스보다
2
최대 100배 더 빠르게 실행할 수 있다. 이러한 성능 향상은 특히 머신 러닝, 그래프 알고리즘 등
반복 알고리즘과 기타 데이터를 재사용하는 모든 유형의 작업에 많은 영향을 주었다.
그래프 형태로 저장된 도시 지도 데이터가 있다고 하자. 이 그래프의 정점(vertex)은 지도상의 관
심 지점(Point Of Interest, POI)을 나타내며, 간선(edge)은 두 지점 사이의 이동 가능한 경로와 거
리를 의미한다. 이제 새 구급차 기지를 건설할 장소를 지도상의 모든 지점과 최대한 가까운 위치
에 선정해야 한다고 하자. 이 위치는 바로 그래프의 중심 지점이다. 그래프의 중심 지점을 찾으려
면 먼저 모든 정점 간의 최단 거리(shortest path)를 계산한 후 각 정점별로 가장 먼 정점과의 거리
(farthest point distance)(다른 모든 정점과의 거리 중 최댓값)를 구한다. 마지막으로 가장 먼 정점과
의 거리가 가장 짧은 정점을 찾아야 한다. 이 알고리즘에서 가장 어렵고 복잡한 부분은 첫 번째 단
계, 즉 모든 정점 간의 최단 경로를 병렬로 계산하는 작업이다. 그렇다고 불가능한 일은 아니다. 3
이 알고리즘을 맵리듀스로 구현하려면 각 단계의 계산 결과를 디스크(즉, HDFS)에 저장해야 한
다. 다시 말해 2단계에서는 1단계 결과를, 3단계에서는 2단계 결과를 각각 디스크에서 읽어 들인
다. 하지만 스파크에서는 모든 정점 간의 최단 경로를 찾은 후 이 결과를 메모리에 캐시할 수 있
다. 2단계에서는 메모리에 저장된 최단 경로 데이터를 사용해 각 정점별로 가장 먼 정점과의 거리
를 찾고, 그 결과를 다시 메모리에 캐시할 수 있다. 마지막 3단계에서는 최종 캐시된 데이터에서
가장 먼 정점과의 거리가 가장 짧은 정점을 찾을 수 있다. 따라서 데이터를 매번 디스크에 읽고 쓰
는 맵리듀스보다 스파크의 성능이 더 좋을 가능성이 높다.
실제로도 스파크의 성능은 매우 뛰어나다. 일례로 2014년 10월에 열린 데이토나 그레이 정렬 대
회(Daytona Gray Sort contest)에서 스파크는 100TB를 1406초 만에 정렬하는 세계 신기록을 세우
며 (엄밀히 말해 TritonSort와 공동으로) 우승했다(http://sortbenchmark.org).
2 Reynold Xin et al., Shark: SQL and Rich Analytics at Scale(http://mng.bz/gFry)
3 T. Srinivasan et al., A Scalable Parallelization of All-Pairs Shortest Path Algorithm for a High Performance Cluster
Environment(http://mng.bz/5TMT)
033
spark_08.indd 33 2018-05-08 오후 6:26:10