Spark 알아보기 - 제 2장 (각 데몬의 역할 Driver, Master, Worker)
왈왈이
2019. 1. 7. 21:38
목차
제 2장
- 각 데몬의 역할 (Driver / Master / Worker)
각 데몬의 역할 (Driver, Master, Worker)
Spark와 M/R 아키텍처의 차이점 그리고 Spark이 YARN에서 어떻게 동작하는지
- 분산모드에서 Spark는 master/slave 구조로 이루어져 있다.
- master는 Driver, slave는 Worker/Executor
Applications
- Spark는 M/R과 유사한 job 개념을 갖고 있지만 “application”이라는 higher-level construct가 있다.
- application can run multiple jobs, in sequence or in parallel.
- SparkContext = an instance of application
- M/R과는 다르게 Executor라 불리우는 process들을 가질 수 있다.
- application은 클러스터에 항상 떠있다. 그래서 빠른 메모리 접근을 가능케 한다.
Cluster Manager
- Driver와 Executor는 Cluster Manager를 통해서 최초 실행
- Cluster Manager는 Executor process의 시작을 책임짐
Driver
- 사용자 프로그램을 실행시키는 main()함수를 갖고 있는 process
- Executor의 상태를 확인하고 Data 위치를 기반으로 Task 배치
- 사용자 프로그램을 실제수행단위(Task)로 변환 : Input -> RDD -> Transform or Action Operation, 데이터 수집 or 저장
- Task를 Executor에 할당 : Executor는 Task를 수행하고 RDD를 저장한다.
- Driver 정보는 http://<driver-node>:4040 에서 확인 가능
- Spark에서는 job flow, task scheduling 를 Driver가 함
- Hadoop 1.x 에서는 task scheduling을 JobTracker가 Hadoop 2.x에서는 Application Master가 책임을 짐
Executor
- Executor는 Spark의 Job Task를 수행하는 역할
- Spark Application이 실행될 때 한번 수행이 시작되며 Application lifetime과 동일
- Task 실행하고 결과를 Driver에 전송
- 메모리에 저장된 RDD를 제공
- Block Manager 라고 불리는 Service 를 통해서 제공되는데, 이는 RDD가 Executor 내부에서 cache 되기 때문
- M/R은 process를 소유한 각각의 task를 실행한다. Task 가 종료하면, process는 사라진다.
- Spark는 많은 task를 single process 안에서 동시에 실행할 수 있음. process는 생명주기 동안 Spark Application에 머문다. 실행할 job이 없을지라도
- 이 모델의 장점은, speed 임. Task가 매우 빨리 시작될 수 있음
- 단점은 coarser-grained resource management
- executor 몇개가 수정되면 그만큼의 resource가 수정되고 application은 동일한 양만큼의 resource를 다시 올려야 한다
Summary
- Application : single job, sequence job, 혹은 오래 동작하는 service
- Driver : spark context가 돌아가는 process임. 클러스터에서 각 단계 실행마다 application 변환에 대한 책임을 갖는다. application 마다 1개의 driver가 존재
- Application Master : driver가 요청한 자원을 할당하거나 적절한 host/container를 찾는 역할에 대한 책임을 갖는다. application 마다 1개의 Application Master가 존재
- Executor : node에 있는 한개의 JVM instance, 생명주기동안 여러개의 task 동시 수행. node는 몇몇개의 Spark executor를 갖을 수 있다.
- Task : 분산된 dataset의 파티션당 작업의 단위