본문 바로가기
🌿 Data Engineering/Study

[Spark] Apache Spark란? | 구조 및 동작방식

by 카프리썬_ 2021. 4. 22.
728x90
728x90

앞서 Apache Spark의 정의를 파악하기까지 나름 머나먼 여정이였다.

2021.04.21 - Apache Spark란? | Spark정의를 알아보기까지 빅데이터흐름

2021.04.21 - Apache Spark란? | 빅데이터 처리단계 -수집과 저장/ETL/HBase

2021.04.22 - Apache Spark란? | 빅데이터 처리단계-분산처리/하둡/맵리듀스

 

이제 본격적으로 Spark를 알아보려고 한다. 

 

Spark는 4가지 기능을 제공한다. 또한 Scala언어로 만들어졌지만, Java, R,Python 등 프로그래밍 언어API도 제공한다. 

  • 머신러닝을 위한 ML Lib
  • 실시간 처리와 방대한 연산을 위한 Structured Streaming도구
  • 구조화된 데이터를 처리하기 위한 Spark SQL
  • 그래프 처리를 위한 Graph X

Spark의 4가지 기능

 

Apache Spark 구조

일단 크게 두가지로 볼 수 있다.

작업을 관리하는 '드라이버'와 작업이 실행되는 노드를 관리하는 '클러스터 매니저'다.

 

아래는 공식문서에 소개되어 있는 그림이다.

보면 왼쪽에 Diriver Program이 있고, 가운데 Cluster Manager가 있다.

그리고 매니저가 관리하는 여러개의 워커노드가 있다.

그래서 워커노드들이 묶인 클러스터로 구성되어 있고,

스파크 어플리케이션은 마스터-슬레이브 구조로 실행된다.

 

Spark Application이란? 스파크 실행 프로그램

드라이버와 Executor프로세스로 실행되는 프로그램이다.

 

Dirver란? 스파크 어플리케이션을 실행하는 프로세스

main함수를 실행하고, SparkContext 객체를 생성한다.

스파크 애플리케이션의 라이프 사이클을 관리하고, 사용자로부터 입력을 받아서 애플리케이션에 전달한다 

 

SparkContext란? 클러스터 매니저와 연결되는 객체

 

Cluster Manager란? 스파크 애플리케이션의 리소스를 효율적으로 배분.

아래와 같은 여러가지 클러스터 매니저를 지원한다

  • YARN : 하둡 클러스터 매니저 (리소스매니저,노드매니저)
  • Mesos : 아파치 클러스터 매니저 (동적리소스 공유 및 격리로 여러소스의 워크로드를 처리)
  • StandAlone : 스파크에서 자체적으로 제공하는 클러스터 매니저 (각 노드에서 하나의 익스큐터만 실행가능)

이제 클러스터매니저와 SparkContext가 연결되면 각 클러스터 내부의 워커노드에서 Executor를 얻게된다.

 

Executor란? 테스크의 실행을 담당하는 에이전트. 실제 작업을 진행하는 프로세스

익스큐터는 태스크 단위로 작업을 실행하고, 결과를 드라이버에 알려줍니다. 

익스큐터는 사용자가 만든 SparkContext를 위해서 데이터를 저장하거나 연산을 실행하는 프로세스라 할 수 있다.

 

Executor가 생성되었으니 Pyhton,R,Java와 같은 프로그래밍 언어로 작성한 파일을 Executor에게 전달한다.

이때 이 파일에는 SparkContext가 있고, 이를 이용해 어떤일을 할지를 짠다. 

 

마지막으로 코드내부의 SparkContext가 Executor에게 작성된 코드의 task를 수행하라고 전달한다.

 

Task란? 익스큐터에서 실행되는 실제 작업. 

스파크안에서 수행되는 작업은 job, stage,task로 구성된다.

잡은 스파크에플리케이션한테 전달한 작업 

스테이지는 단위에 따라서 구분한 작업

태스크는 익스큐터에서 실행되는 실제 작업.

일련의 과정을 내가 이해한대로 요약해보면

일단 스파크의 구성요소로 드라이버와 클러스터매니저가 있다.

드라이버는 리소스를 관리해주는 클러스터매니저와 연결하는 SparkContext객체를 생성하고, main함수를 시작한다. 

SparkContext객체로 인해 Executor가 생기고, Executor가 코드의 task를 수행한다.

그래서 스파크를 실행한 프로그램인 스파크어플리케이션이 만들어진다!

 

 

출처

참고블로그 techblog-history-younghunjo1.tistory.com/151?category=964362

공식문서 spark.apache.org/docs/latest/cluster-overview.html

wikidocs  wikidocs.net/26630

728x90
반응형