Kim-Baek 개발자 이야기

Spark 란? Spark 구조 & 동작 과정 본문

개발/Spark

Spark 란? Spark 구조 & 동작 과정

킴백 개발자 2020. 12. 30. 15:15

오늘 Apach Spark 에 대해서 공부해보려고 합니다.

 

Apach Spark 는 In memory 방식의 대용량 데이처 처리 엔진입니다

 

Java, Scala, Python, R 과 같은 high level API 를 제공하고 있고, 특히 Spark SQL 같은 SQL을 위한 다양한 라이브러리를 제공하고 있습니다.

 

분산 클러스터 컴퓨팅 프레임워크로 Standalone 환경 뿐만 아니라 Cluster mode를 통해 대용량 데이터 처리가 가능합니다

 

 

 

특징


 

스파크는 인메모리 (In Memory) 기반 처리로 빠른 처리가 가능하며 Cluster Manger를 활용해 분산환경에서도 처리가 가능합니다.

 

YARN, Mesos, Kubernetes 등 다양한 클러스터에서 동작이 가능합니다

 

기존 대용량 처리 프레임워크로 많이 사용 되던 MapReduce 작업 처리 같은 경우는 중간 결과를 Disk에 쓰기 때문에 IO 작업의 부하가 있지만,

 

스파크 같은 경우는 In memory를 활용해 중간결과를 저장하면서 효율적인 대용량 처리가 가능 합니다

 

In in-memory computation, the data is kept in random access memory(RAM) instead of some slow disk drives and is processed in parallel.

 

 

 

구조

 


스파크의 구조는 크게 아래와 같이 정리할 수 있는데요!

 

 

Spark Aplication 이 동작하기 위해서는 Main Program을 포함하고 있는 SparkContext 객체가 필요하는데요!

Driver program이라고 불리기도 합니다

 

 

특히 클러스터 모드에서는 SparkContext 는 리소스를 할당 받고 관리하기 위해서 Cluster Manager와 연결되어 통신하면서 자원을 관리하고 Life Cycle 을 관리하게 됩니다.

 

 

 

분산 환경의 Cluster Manger의 종류로는 Apache Mesos, Hadoop YARN, Kubernetes 를 활용가능 한데요

 

스파크를 Hadoop EcoSystem을 활용하면서 HADOOP YARN 을 많이 활용하는 Case를 봤습니다

 

 

Cluster Manager와 연결되어 SparkContext는 워커 노드에 있는 Excutor에서 잡을 할당하게 됩니다.

 

Executor 안의 Task가 실제로 로직을 처리하는 프로세스이며, YARN 컨테이너라고 불리기도 합니다.

 

Executor는 Task 단위로 일을 처리하고 결과를 Driver Program에게 알려줍니다

 

 

 

Component


 

Driver Program : main() 함수를 시행시키는 애플리케이션으로 SparkContext를 생성한다.

 

Cluster Manager : 클러스터의 리소스를 관리하고 리소스를 할당받기 위해 사용된다.

 

Worker Node : 클러스터에서 애플리케이션을 실행시킬 수 있는 Node를 의미한다

 

Executor : Worker Node에서 애플리케이션을 실행시키는 프로세스이다. 여러개의 Task들을 동작시키고 in memory 방식이나 Disk에 저장된 데이터를 관리한다.

 

Task : Executor가 실행하는 실제 작업이다. 

 

Job : 스파크 애플리케이션으로 제출된 작업이라고 보면 된다.

 

Stage : Job을 여러 단위의 Stage로 쪼갤 수 있다. MR의 Map 과 Reduce로 쪼개는 것과 같은 매커니즘이다.

 

 

요약하면 Spark Application 은 Driver와 Exceutor들이 모여서 동작하는 Java Process 이다.

 

클러스터의 리소스를 관리하기 위해서 Cluster Manager가 Spark 클러스터를 관리하게 된다

 

Submit 된 Spark Job들은 여러개의 Stage로 구분되며 각 Stage는 Take들을 가지고 있다.

 

Excutor 는 여러개의 Task를 처리하는 방식이다.

* 다른 정보를 더 얻고 싶다면

PC 내에서 컨텐츠 내 링크나 좌측의 관련글을 확인해주세요!

모바일에서는 컨텐츠 내, 링크를 참고해주세요:)

반응형

'개발 > Spark' 카테고리의 다른 글

[Spark] Spark 3.0 공식 버전 Release  (0) 2020.09.01
Comments