Page 15 -
P. 15
최초의 스파크는 UC 버클리 AMPLab의 마테이 자하리아와 그의 멘토였던 이온 스토이카, 그리 1
고 레이놀드 신, 패트릭 웬델, 앤디 콘윈스키, 알리 고시가 설계했다(이들은 이후 데이터브릭스
(Databricks)를 창업했다). 스파크는 오픈소스로 공개했지만, 데이터브릭스는 아파치 스파크 개발 아파치 스파크 소개
을 주도하며 스파크 코드의 75% 이상을 기여했다. 그들은 또한 데이터브릭스 클라우드(Databricks
Cloud)라는 스파크 기반의 빅데이터 분석 솔루션을 상용화했다.
사용자는 스파크의 잘 짜인 API와 런타임 아키텍처를 이용해 로컬 프로그램을 작성하는 것과 유
사한 방식으로 분산 프로그램을 작성할 수 있다. 스파크의 컬렉션은 대량의 노드에 분산된 데
이터를 참조할 수 있고, 스파크는 분산 데이터의 실제 위치를 사용자에게 노출하지 않고도 적절
히 추상화할 수 있다. 또 스파크에서는 데이터 처리 작업에 적합한 함수형 프로그래밍(functional
programming) 방식을 사용할 수 있다.
스파크는 파이썬과 자바, 스칼라, 최근에는 R 언어까지 지원해 사용자를 광범위하게 포용할 수 있
다. 전통적으로 파이썬과 R을 선호하는 학계, 여전히 많은 사용자를 보유한 자바 커뮤니티, 자바
가상 머신( Java Virtual Machine, JVM)에서 함수형 프로그래밍 방식을 지원하며 점차 대중화되는 스
칼라 사용자도 스파크를 활용할 수 있다.
스파크는 맵리듀스와 유사한 일괄 처리 기능, 실시간 데이터 처리 기능, SQL과 유사한 정형 데
이터 처리 기능, 그래프 알고리즘, 머신 러닝 알고리즘을 모두 단일 프레임워크와 통합했다. 이
는 마치 빅데이터 애플리케이션에 필요한 대부분의 요구 사항을 만족시킬 수 있는 원스톱 편의
점과 같다. 오늘날 스파크는 가장 바쁘고 빠르게 성장하는 아파치 소프트웨어 재단 프로젝트임
에 틀림없다.
하지만 일부 애플리케이션은 스파크를 사용하기에 적합하지 않다. 스파크에서는 분산 아키텍
1
처 때문에 처리 시간에 약간의 오버헤드(overhead)가 필연적으로 발생한다. 대량의 데이터를 다
룰 때는 오버헤드가 무시할 수 있는 수준이지만, 단일 머신에서도 충분히 처리할 수 있는 데이터
셋을 다룰 때는 작은 데이터셋의 연산에 최적화된 다른 프레임워크를 사용하는 것이 더 효율적
이다(최근 이러한 사례가 점점 늘어난다). 또 스파크는 온라인 트랜잭션 처리(OnLine Transaction
Processing, OLTP) 애플리케이션을 염두에 두고 설계되지 않았다. 즉, 대량의 원자성(atomicity) 트
랜잭션을 빠르게 처리해야 하는 작업에는 스파크가 적합하지 않다. 반면 일괄 처리 작업이나 데이
터 마이닝 같은 온라인 분석 처리(OnLine Analytical Processing, OLAP) 작업에는 적합하다.
1 역주 오버헤드는 어떤 연산을 처리하는 데 별도로 필요한 간접적인 컴퓨팅 리소스를 의미한다.
031
spark_08.indd 31 2018-05-08 오후 6:26:10