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



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

    GraphX ~그래프 연산  (0) 2018.04.03
    GraphX ~그래프 생성까지  (0) 2018.04.02
    spark info좀 꺼보자  (0) 2018.02.28
    Spark Streaming,Structured Streaming  (0) 2018.02.27
    RDD(Resilient Distributed Datasets)  (0) 2018.02.27

    대화의 장 💬