핀아의 저장소 ( •̀ ω •́ )✧
01_05. Cluster Topology 본문
✅ Master Worker Topology
- Spark는 Master Worker Topology로 구성된다. = master와 worker로 구성
- 스파크를 쓰면서 잊지 말아야 할 점
- 항상 데이터가 여러곳에 분산되어 있다는 것
- 같은 연산이어도 여러 노드에 걸쳐서 실행된다는 점
✅ Spark 구조
- 개발 시 Driver Program을 중점적으로 사용하며, 드라이버 프로그램이 노드들에게 연산해야될 작업을 보낸다.
- 또한 Driver Program은 작업들을 조직한다.
- SparkContext는 새로운 RDD를 생성하는 역할을 한다.
- Driver Program은 개발자나 유저가 프로그램과 상호작용을 할 수 있는 노드이고, 실제 작업은 worker 노드에서 일어난다.
- 클러스터 매니저를 통해 드라이버와 워커를 연결 실행되는 작업들에 대한 스케줄링과 자원관리 담당한다.
- Executor가 연산을 수행하고 데이터를 저장하고 드라이버 프로그램에게 데이터를 보낸다. 또한, 데이터를 저장하는 cache를 가지고 있다.
[실행 과정]
- Driver Program이 SparkContext를 생성해서 Spark 어플리케이션을 처음에 만들게 되고, SparkContext가 Cluster Manager에 연결을 하고, Cluster Manager는 자원들을 할당한다.
- Cluster Manager가 Cluster에 있는 노드들의 Executor를 수집하고, 이 Executor들은 연산을 수행하고, 데이터들을 저장한다.
- 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