2018년/spark

[Spark] :: 구조 및 동작 과정 [이론]

위지원 2018. 1. 17. 14:18


전체 처리 과정

Spark cluster components


1 . Driver Program : 사용자가 실제로 작성한 코드


 드라이버가 실행 될때

- 사용자 프로그램을 Task로 변환

- Task를 Executor에 할당


SparkContext를 반드시 포함

- 스파크 환경 변수 설정등

- RDD 생성 / 파일 로딩 / RDD의 메타 데이터 저장

- Job 정보 UI로 표현


시작 시 스케쥴러 실행

- DAG( Direct Acyclic Graph ) : 데이터의 지역성을 고려하여 단순히 Job의 논리적인 실행 계획을 세움


- Task : stage 단위 ( Task의 묶음 ) 로 분할 * task는 가장 작은 실행단위

- 각 stage 별 task 실행 계획을 생성 * job은 stage의 묶음



2. Deploy mode : 드라이버 프로그램의 실행 위치 지정

- client


- cluster : spark Context가 지정되는 worker는 임의 // 같은 클러스터내에 존재하기때문에 통신 용이



3. Cluster Manager : 서버의 리소스 (cpu,메모리) 모니터링

-HA 지원

1 ) slave가 죽으면 다른 slave 할당

2 ) master가 죽으면 주키퍼로 해결

3 ) 드라이버 프로그램에 자원 할당을 수행

4 ) 자원 스케쥴링 방법 : 동적, 정적


4. 자원 할당 방식

- 정적 : 고정 리소스 , 일반적인 배치 처리에 적합

- 동적 : 자원을 프로그램이 쓰지 않는다 싶으면 죽이는 방식  , 요청이 들어올때만 수행하는 어플리케이션에 적합


5. 자원 스케쥴링

- SparkContext에서 job의 자원 할당을 담당

- FIFO,FAIR 두가지 방식이 있음 *FAIR은 모든 JOB이 동일한 자원을 정해진 시간동안 번갈아가면서 사용

- POOLING : pool마다 스케쥴링,자원할당을 함