새소식

Data

RDD & Spark Topology

  • -

Resilient Distributed Dataset 

  • Transformation
    • 결괏값으로 새로운 RDD를 반환
    • Lazy Execution(지연 실행)
    • Narrow와 Wide가 존재
    • map(), flatMap(), filter(), distinct(), reduceByKey(), groupByKey()
    • Narrow Transformations
      • 1:1 변환
      • filter(), map(), flatMap(), sample(), union()
      • 1열을 조작하기 위해 다른 열/ 파티션의 데이터를 쓸 필요가 없음
      • 정렬이 필요하지 않은 경우
      • 즉 한 열에서 다른 열로 변환될 수 있는 경우에만 사용
    • Wide Transformation
      • Shuffling
      • Intersection and join, distinct, cartesian, reduceByKey(), groupByKey()
      • 아웃풋 RDD의 파티션에 다른 파티션의 데이터가 들어갈 수 있음
      • 데이터가 다른 파티션도 왔다 갔다 하기 때문에 많은 리소스 요구

Spark Topology

  • Spark Topology
    • Spark는 Master와 Worker로 나뉘어 있음
  • Spark
    • Spark는 항상 데이터가 여러 곳에 분산되어 있음
    • Spark는 같은 연산이어도 여러 노드에 걸쳐서 실행
    • Driver Program(노드)은 개발자나 유저가 프로그램과 상호작용을 할 수 있는 노드
    • 실제 작업은 Worker Node에서 실행
    • Driver Program과 Worker Node는 Cluster Manager를 통해 communication 진행
    • Cluster Manager는 수행되는 작업의 스케쥴링과 자원 관리를 수행 (yaml 등)

  • 실행 과정
    1. Driver Program이 SparkContext를 생성하면 Spark Application 만들어짐
    2. SparkContext가 Cluster Manager에 연결
    3. Cluster Manager는 자원 할당
    4. Executor는 연산을 수행하고 데이터 저장 Cluster Manager가 Cluster에 있는 노드들의 Executor를 수집
    5. SparkContext가 Executor에게 실행할 task 전송
    6. 전송된 Task들을 결과값을 DriverProgram에 보냄

'Data' 카테고리의 다른 글

Data Engineering 기초 개념  (0) 2023.08.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.