Spark
통합
- 아파치 스파크는 UC버클리 대학교에서 2009년 스파크 연구 프로젝트로 시작
- 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하자
- SQL과 구조화된 데이터를 제공하는 스파크 SQL, 머신러닝을 지원하는 MLlib, 스트림 처리 기능을 제공하는 스파크 스트리밍,구조적 스트리밍, 그래프 분석 엔진 GraphX
기본 아키텍처
- 클러스터의 데이터 처리 작업을 관리하고 조율
- 연산에 사용할 클러스터는 스파크 스탠드얼론, 클러스터 매니저, 하둡 YARN, 메소스 같은 클러스터 매니저에서 관리
- 사용자는 클러스터 매니저에 스파크 애플리케이션을 제출
- 제출받은 클러스터 매니저는 애플리케이션 실행에 필요한 자원을 할당하며 우리는 할당받은 자원으로 작업을 처리함
스프크 애플리케이션
- 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성
- 드라이버 프로세스는 클러스터 노드 중 하나에 실행되며 함수를 실행
- 익스큐터는 드라이버 프로세스가 할당한 작업을 수행, 드라이버가 할당한 코드를 실행하고 진행 상황을 다시 드라이버 노드에 보고하는 두가지 역할
스파크 드라이버
스파크 익스큐터
클러스터 매니저
실행 모드
- 클러스터 모드
- 클라이언트 모드
- 로컬 모드
스파크 잡
- 보통 액션 하나당 하나의 스파크 잡이 생성되며 액션은 항상 결과를 반환
스테이지
- 스테이지는 다수의 메신에서 동일한 연산을 수행하는 태스크의 그룹
태스크
- 단일 익스큐터에서 실행할 데이터의 블록과 다수의 트랜스포메이션 조합
- 태스트는 데이터 단위(파티션)에 적용되는 연산 단위
구조적 API의 실행 과정
논리적 실행 계획
- 사용자의 다양한 표현식을 최적화된 버전으로 표현
- 사용자 코드는 검증 전 논리적 실행 계획으로 변환
- 스파크 분석기는 컬럼과 테이블을 검증하기 위해 카탈로그, 모든 테이블의 저장소 그리고 DataFrame 정보를 활용
물리적 실행 계획
- 스파크 실행 계획이라고도 불리는 물리적 실행 계획은 논리적 실행 계획을 클러스터 환경에서 실행하는 방법을 정의
- 비용을 비교하는 한 가지 예는 사용하려는 테이블의 크기나 파티션수 등의 물리적 속성을 고려해 지정된 연산 수행에 필요한 비용을 계산하고 비교