핀아의 저장소 ( •̀ ω •́ )✧

01_05. Cluster Topology 본문

Big Data/Engineering

01_05. Cluster Topology

_핀아_ 2023. 5. 13. 02:10

✅ Master Worker Topology

  • Spark는 Master Worker Topology로 구성된다. = master와 worker로 구성
  • 스파크를 쓰면서 잊지 말아야 할 점
    • 항상 데이터가 여러곳에 분산되어 있다는 것
    • 같은 연산이어도 여러 노드에 걸쳐서 실행된다는 점

✅ Spark 구조

  • 개발 시 Driver Program을 중점적으로 사용하며, 드라이버 프로그램이 노드들에게 연산해야될 작업을 보낸다.
  • 또한 Driver Program은 작업들을 조직한다.
  • SparkContext는 새로운 RDD를 생성하는 역할을 한다.
  • Driver Program은 개발자나 유저가 프로그램과 상호작용을 할 수 있는 노드이고, 실제 작업은 worker 노드에서 일어난다.
  • 클러스터 매니저를 통해 드라이버와 워커를 연결 실행되는 작업들에 대한 스케줄링과 자원관리 담당한다.
  • Executor가 연산을 수행하고 데이터를 저장하고 드라이버 프로그램에게 데이터를 보낸다. 또한, 데이터를 저장하는 cache를 가지고 있다.

[실행 과정]

  1. Driver Program이 SparkContext를 생성해서 Spark 어플리케이션을 처음에 만들게 되고, SparkContext가 Cluster Manager에 연결을 하고, Cluster Manager는 자원들을 할당한다.
  2. Cluster Manager가 Cluster에 있는 노드들의 Executor를 수집하고, 이 Executor들은 연산을 수행하고, 데이터들을 저장한다.
  3. SparkContext가 Executor에게 실행할 task들을 전송한 다음에 실행된 task들은 결과값을 내뱉게 되는데 그런 결과값들은 다시 Driver Program에 보내진다.

💫 예제1

RDD.foreach(lambda x: print(x))
  • foreach는 Actions이기 때문에 worker 노드에서 실행되게 된다.
  • 우리가 주로 코딩하는 곳은 driver 프로그램이므로 Actions가 실행되는 곳과 달라 결과값이 보이지 않는다.
  • worker 노드 어딘가에서 print()가 실행된다.

자세한 내용은 아래 글에서 확인

https://mydb-lib.tistory.com/entry/0103-RDD-Transformations-and-Actions

 

01_03. RDD Transformations and Actions

Transformations & Actions Transformations 결과값으로 새로운 RDD를 반환 Actions가 실행되기 전까진 실행되지 않는다. 지연 실행(Lazy Execution) Actions 결과값을 연산하여 출력하거나 저장 파이썬 오브젝트나 리

mydb-lib.tistory.com

💫 예제2

foods = sc.parallelize(["짜장면", "마라탕", ...])
three = foods.take(3)
  • foods리스트에서 앞에 3개가 출력된다.
  • 일반적으로 Actions는 Driver Program이 Worker Node로부터 데이터를 받는 과정을 포함하기 때문이다.

'Big Data > Engineering' 카테고리의 다른 글

01_07. Key-Value RDD Operations & Joins  (0) 2023.05.14
01_06. Reduction Operations  (0) 2023.05.13
01_04. Cache & Persist  (0) 2023.05.13
01_03. RDD Transformations and Actions  (2) 2023.05.13
01_02. 병렬처리에서 분산처리까지  (0) 2023.05.12
Comments