본문 바로가기

Spark 알아보기 - 제 2장 (각 데몬의 역할 Driver, Master, Worker)

목차

제 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 배치
    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의 파티션당 작업의 단위