각 데몬의 역할 Driver, Master, Worker

각 데몬의 역할 (Driver, Master, Worker)

Spark와 M/R 아키텍처의 차이점

  • 분산모드에서 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 배치

    1. 사용자 프로그램을 실제수행단위(Task)로 변환 : Input -> RDD -> Transform or Action Operation, 데이터 수집 or 저장

    2. 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과 동일

    1. Task 실행하고 결과를 Driver에 전송

    2. 메모리에 저장된 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의 파티션당 작업의 단위

Last updated