84
1
부
아파치 스파크를 사용한 스트림 처리의 기본
마이크로배치 접근 방식은 기차에 비교할 수 있다. 기차는 역에 도착해서 일정 시간 동안 승객을
기다린 후 탑승한 모든 승객을 목적지까지 수송한다. 같은 궤적을 위해 자동차나 택시를 타면 승
객이 출발지부터 도착지까지 더 빠른 여행을 할 수 있지만, 기차는 훨씬 더 많은 승객을 목적지
에 도착하도록 보장한다. 기차는 일부 승객이 열차를 출발할 때까지 기다려야 하는 비용으로 동
일한 궤도에 대해 더 높은 처리량을 제공한다.
스파크 코어 엔진은 분산 배치 처리에 최적화되어 있다. 스트리밍 컨텍스트에서 그것의 적용은
시간 단위당 대량의 데이터를 처리할 수 있도록 보장한다. 스파크는 한 번에 많은 요소를 처리하
도록 하여 분산 작업 스케줄링의 오버헤드를 상쇄하며, 이 장 앞부분에서 보았듯이 인메모리 기
법, 쿼리 최적화, 캐싱 및 코드 생성까지 활용하여 데이터셋의 변환 프로세스를 가속화한다.
엔드
-
투
-
엔드 애플리케이션에서 스파크를 사용할 때 중요한 제약 조건은 처리된 데이터를 수신
하는 다운스트림 시스템도 스트리밍 프로세스에서 제공하는 전체 출력을 수용할 수 있어야 한다
는 것이다. 그렇지 않으면 갑작스런 부하 피크에 직면했을 때 종속 장애를 일으킬 수 있는 애플
리케이션 병목 현상을 발생시킬 위험이 있다.
4.5
스파크의 폴리글랏
API
앞서 아파치 스파크의 주요 설계 기초가 스트림 처리, 즉 실행 엔진 모델 내에 정의된 풍부한
API
와 인메모리 처리 모델에 영향을 미칠 때의 개요를 정리했다.