Page 19 -
P. 19
스파크는 스칼라, 자바, 파이썬, R을 아우르는 다양한 프로그래밍 언어를 지원해 더 많은 사용자 1
를 포용할 수 있다. 특히 스칼라를 사용하면 융통성(versatility)과 유연성, 데이터 분석에 훨씬 적합
한 함수형 프로그래밍 개념 등 스칼라 언어의 여러 장점을 활용할 수 있다. 파이썬과 R 언어는 학 아파치 스파크 소개
계와 데이터 과학자 커뮤니티에 폭넓게 퍼져 있는데, 이들도 자바 및 스칼라 개발자처럼 손쉽게
스파크를 활용할 수 있다.
또 스파크가 제공하는 대화형 콘솔인 스파크 셸(또는 스파크 REPL(Read-Eval-Print Loop))을 이
용해 간단한 실험을 하거나 아이디어를 테스트할 수 있다. 스파크 셸을 사용하면 프로그램 문제
를 진단하려고 컴파일과 배포를 끊임없이 반복하지 않아도 되며, 전체 데이터를 처리하는 작업도
REPL에서 실행할 수 있다.
마지막으로 사용자는 스파크 자체(standalone) 클러스터, 하둡의 YARN(Yet Another Resource
Negotiator) 클러스터, 아파치 메소스(Mesos) 클러스터 등 다양한 유형의 클러스터 매니저를 사용해
스파크를 실행할 수 있다. 이는 스파크를 더욱 유연하게 하며, 더 많은 사용자가 스파크를 활용할
수 있도록 지원한다.
1.1.3.2 통합 플랫폼
스파크는 하둡 생태계의 여러 도구가 제공한 다양한 기능을 플랫폼 하나로 통합했다. 스파크의 범
용적인 실행 모델을 사용해 실시간 스트림 데이터 처리, 머신 러닝, SQL 연산, 그래프 알고리즘,
일괄 처리 등 여러 종류의 프로그램을 단일 프레임워크에서 구현할 수 있다. 또 프로그래머와 데
이터 엔지니어, 데이터 과학자 등 역할이 다양한 사람들이 같은 플랫폼에서 함께 일할 수 있도록
스파크가 이들 사이의 간극을 이어 주는 다리 역할을 할 수 있다. 스파크가 제공하는 함수 또한 지
속적으로 증가하는 추세다.
1.1.3.3 안티 패턴
스파크는 일괄 분석을 염두에 두고 설계했기 때문에 공유된 데이터를 비동기적으로 갱신하는 연
4
산(예: 온라인 트랜잭션 처리 등)에는 적합하지 않다 (실시간 데이터를 처리하는 스파크 스트리밍
은 단순히 타임 윈도로 분할한 스트림 데이터에 일괄 처리를 적용한 것이다). 이러한 활용 사례에
는 별도의 특화된 도구가 여전히 필요하다.
4 Matei Zaharia et al., Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing(http://
mng.bz/57u)
035
spark_08.indd 35 2018-05-08 오후 6:26:11