Page 22 -
P. 22
1.2.2 스파크 SQL
스파크 SQL은 스파크와 하이브 SQL(HiveQL)이 지원하는 SQL을 사용해 대규모 분산 정형 데이
터를 다룰 수 있는 기능을 제공한다. 스파크 버전 1.3에 도입된 DataFrame과 스파크 버전 1.6에
도입된 Dataset은 정형 데이터의 처리를 단순화하고 성능을 크게 개선하며, 스파크 SQL을 스파
크에서 가장 중요한 컴포넌트로 부상시켰다. JSON( JavaScript Object Notation) 파일, Parquet 파
일(데이터와 스키마를 함께 저장할 수 있는 파일 포맷으로 최근 널리 사용된다), 관계형 데이터
베이스 테이블, 하이브 테이블 등 다양한 정형 데이터를 읽고 쓰는 데도 스파크 SQL을 사용할
수 있다.
스파크 SQL은 DataFrame과 Dataset에 적용된 연산을 일정 시점에 RDD 연산으로 변환해 일
반 스파크 잡으로 실행한다. 스파크 SQL은 카탈리스트(Catalyst)라는 쿼리 최적화 프레임워크
를 제공하며, 사용자가 직접 정의한 최적화 규칙을 적용해 프레임워크를 확장할 수도 있다. 또
BI(Business Intelligence) 도구 등 외부 시스템과 스파크를 연동할 수 있는 아파치 쓰리프트(Thrift)
서버도 제공한다. 외부 시스템은 기존 JDBC 및 ODBC 프로토콜을 이용해 스파크 SQL 쿼리를
실행할 수 있다.
1.2.3 스파크 스트리밍
스파크 스트리밍은 다양한 데이터 소스에서 유입되는 실시간 스트리밍 데이터를 처리하는 프
레임워크다. 스파크가 지원하는 스트리밍 소스에는 HDFS, 아파치 카프카(Kafka), 아파치 플럼
(Flume), 트위터(Twitter), ZeroMQ가 있다. 이외에도 커스텀 데이터 소스도 정의할 수 있다. 스파
크 스트리밍은 장애가 발생하면 연산 결과를 자동으로 복구한다(스트리밍 데이터를 처리할 때는
이러한 장애 복원성이 매우 중요하다). 스파크 스트리밍은 이산 스트림(Discretized Stream, DStream)
방식으로 스트리밍 데이터를 표현하는데, 가장 마지막 타임 윈도 안에 유입된 데이터를 RDD로
구성해 주기적으로 생성한다.
스파크 스트리밍과 다른 스파크 컴포넌트를 단일 프로그램에서 사용해 실시간 처리 연산과 머신
러닝 작업, SQL 연산, 그래프 연산 등을 통합할 수도 있다. 이는 하둡 생태계에서도 독보적인 기
능이다. 스파크 버전 2.0에서는 정형 스트리밍 API를 새롭게 도입해 마치 일괄 처리 프로그램을
구현하는 것처럼 스트리밍 프로그램을 구현할 수 있다.
038
spark_08.indd 38 2018-05-08 오후 6:26:11