스파크 애플리케이션의 구조
스파크를 사용하면서 잊지 말아야 하는 점은 데이터는 항상 분산되어 있고 같은 연산을 하더라도 여러 노드에서 작업한다는 점이다.
[스파크 구조 설명]
스파크는 작업을 관리하는 드라이버 프로그램과 작업이 실제로 작동되는 워커 노드로 나뉘어 있다. 그리고 중간은 클러스터 매니저가 존재하는데 클러스터 매니저는 드라이버 프로그램과 워커노드를 연결시켜주는 중간다리 역할을 한다.
[용어 설명]
- Driver Program : 개발자가 상호작용 할 수 있는 노드이다. main함수를 실행하고 스파크 Context를 생성한다.
- Spark Context : 새로운 RDD를 생성하고, 클러스터 매니저와 연결되는 객체이다.
- Cluster Manager : 드라이버에서 지시받은 작업(리소스)의 스케쥴링과 자원관리를 한다.
- 대표적인 클러스터 매니저에는 대표적으로 Yarn, Mesos, Kubernetes 등이 있다.
- Worker Node : 실질적인 작업(task)을 담당하는 공간
- Executor : 연산을 수행, 저장하고 추출된 결과값을 드라이버 프로그램에 전송한다.
- cache : 연산을 하면서 필요한 저장공간을 활용
[스파크 내부 구조의 실행 흐름]
1. 드라이버 프로그램이 Spark Context를 생성해 스파크 어플리케이션을 생성한다.
2. Context가 클러스터 매니저와 연결되고 클러스터 매니저는 클러스터에 있는 노드들의 Executor를 수집하고 자원을 할당한다.
(작업을 수행할 Executor가 클러스터 매니저의 관리하에 생성된다고 이해하면 편할듯 싶다.)
3. Context는 작업(task)을 수행할 데이터(코드)를 Executor 에게 전송하고 Executor는 실행된 결과값을 다시 드라이버 프로그램에 전달한다.
'Development > Data Engineering' 카테고리의 다른 글
[Apache Spark] 아파치 스파크 RDD란? (0) | 2022.04.19 |
---|---|
[Apache Airflow] 아파치 에어플로우란? (0) | 2022.04.16 |
분산처리의 문제점 (0) | 2022.03.23 |
[Apache Spark] 아파치 스파크 배경, 그리고 이해 (0) | 2022.03.22 |
병렬처리와 분산처리 (0) | 2022.03.18 |
댓글