Spark

Spark

통합

  • 아파치 스파크는 UC버클리 대학교에서 2009년 스파크 연구 프로젝트로 시작
  • 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하자
  • SQL과 구조화된 데이터를 제공하는 스파크 SQL, 머신러닝을 지원하는 MLlib, 스트림 처리 기능을 제공하는 스파크 스트리밍,구조적 스트리밍, 그래프 분석 엔진 GraphX

기본 아키텍처

  • 클러스터의 데이터 처리 작업을 관리하고 조율
  • 연산에 사용할 클러스터는 스파크 스탠드얼론, 클러스터 매니저, 하둡 YARN, 메소스 같은 클러스터 매니저에서 관리
  • 사용자는 클러스터 매니저에 스파크 애플리케이션을 제출
  • 제출받은 클러스터 매니저는 애플리케이션 실행에 필요한 자원을 할당하며 우리는 할당받은 자원으로 작업을 처리함

스프크 애플리케이션

  • 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성
  • 드라이버 프로세스는 클러스터 노드 중 하나에 실행되며 함수를 실행
  • 익스큐터는 드라이버 프로세스가 할당한 작업을 수행, 드라이버가 할당한 코드를 실행하고 진행 상황을 다시 드라이버 노드에 보고하는 두가지 역할

스파크 드라이버

스파크 익스큐터

클러스터 매니저

실행 모드

  • 클러스터 모드
  • 클라이언트 모드
  • 로컬 모드

스파크 잡

  • 보통 액션 하나당 하나의 스파크 잡이 생성되며 액션은 항상 결과를 반환

    스테이지

  • 스테이지는 다수의 메신에서 동일한 연산을 수행하는 태스크의 그룹

    태스크

  • 단일 익스큐터에서 실행할 데이터의 블록과 다수의 트랜스포메이션 조합
  • 태스트는 데이터 단위(파티션)에 적용되는 연산 단위

구조적 API의 실행 과정

논리적 실행 계획

  • 사용자의 다양한 표현식을 최적화된 버전으로 표현
  • 사용자 코드는 검증 전 논리적 실행 계획으로 변환
  • 스파크 분석기는 컬럼과 테이블을 검증하기 위해 카탈로그, 모든 테이블의 저장소 그리고 DataFrame 정보를 활용

    물리적 실행 계획

  • 스파크 실행 계획이라고도 불리는 물리적 실행 계획은 논리적 실행 계획을 클러스터 환경에서 실행하는 방법을 정의
  • 비용을 비교하는 한 가지 예는 사용하려는 테이블의 크기나 파티션수 등의 물리적 속성을 고려해 지정된 연산 수행에 필요한 비용을 계산하고 비교

이벤트 시간 윈도우

텀블링 윈도우

슬라이딩 윈도우