Ryu
  • 👩🏻‍💻 Ryu / software_engineer
  • ✨Resume
  • Python3
    • Python3 가상환경 설정하기
      • Python3 vs Python2
      • Pyenv
      • Venv
      • Pip
    • Flask
      • Flask 설치하기
      • API Server 만들기
    • REST API
    • Command Line 활용하기
    • Module 사용하기
      • Pickle - 자료형을 파일로 저장할 때
    • MongoDB connection
      • Pymongo
    • WSGI
      • 💡WSGI 가 필요한 이유
      • Web Server / WSGI / Middleware / Application 구조
      • WSGI Middleware 종류
      • Gunicorn
        • Gunicorn vs Uwsgi
    • Dockerize
      • 💡Dockerize 가 필요한 이유
      • 1. Create Dockerfile
        • Gunicorn 으로 nginx 와 app 연결하기
    • Kubernetes 로 배포하기
      • 💡Kubernetes 가 필요한 이유
      • Helm 사용하기
      • Helm 으로 k8s 에 앱 배포하기
  • Open Tracing (정리중)
    • Open Tracing 이란 무엇인가
    • Python OpenTracing Example
    • Jaeger, Jaeger UI
    • Python Jaeger Tutorial
    • Zipkin 알아보기
    • Jaeger-client 리스팅
  • Microservice Architecture
    • Netflix의 MSA 컨셉
      • ⚡️ MSA 를 도입할때 고려해야할 점들
  • Paper
    • Dynamo: Amazon’s Highly Available Key-value Store
      • 1. Introduction
      • 2. Background
      • 3. Related Work
        • Related Paper) Pastry, Chord
        • Byzantine Fault Tolerance
      • 4. System Architecture
        • 4.1 System Interface
        • 4.2 Partitioning
        • 4.3 Replication
        • Hash Function
  • Frontend
    • CommonJS 와 AMD
    • RequireJS
    • WebSocket
      • WebSocket vs Socket.io
      • polling vs long polling vs streaming
    • Vue.js
      • Vue.js 에서 WebSocket 사용하기
      • [프로젝트] Vue, Vuex, AntDesignVue 로 운영툴 만들기
    • React x Redux 로 프로젝트 만들기
      • 0. React, Redux 를 선택한 이유
      • 1. 프로젝트 생성하고 Webpack4 적용하기
      • 2. React 와 ReactDOM 적용하기
      • 3. Material UI 적용하기
  • Data Engineering
    • Spark
      • Spark 이란?
      • 각 데몬의 역할 Driver, Master, Worker
      • 장단점 / 함께사용하는 툴 / 사용 사례
  • Service Mesh (정리중)
    • RPC
    • gRPC - Python Server 만들기
      • step 2.
Powered by GitBook
On this page
  • Spark와 M/R 아키텍처의 차이점
  • Applications
  • Cluster Manager
  • Driver
  • Executor
  • Summary

Was this helpful?

  1. Data Engineering
  2. Spark

각 데몬의 역할 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의 파티션당 작업의 단위

PreviousSpark 이란?Next장단점 / 함께사용하는 툴 / 사용 사례

Last updated 6 years ago

Was this helpful?