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

    2018. 1. 17. 14:18

    by. 위지원


    전체 처리 과정

    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마다 스케쥴링,자원할당을 함



    profile
    위지원

    데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

    '2018년 > spark' 카테고리의 다른 글