Spark

[Spark] - Cluster

jyu_seo_ 2026. 3. 18. 15:13

이번시간은 spark의 중요한 네가지 개념에 대해서 알아보고 넘어가보려 합니다

 

Cluster,Node,Executor,Core라는 4가지 개념입니다.

이 4가지 개념이 왜 중요하냐면 실제로 프로젝트를 하게되면 개인용 컴퓨터에서 스파크환경에서 데이터를 분석하고 하는게 아니라 회사에서 실무 프로젝트를 하게되면 아마존이나 마이크로소프트 애저나 하는곳에서 databricks 또는 Fabric같은 클라우드환경에서 스파크를 사용해서 프로젝트를 진행하게 될탠데 모든것이 다 돈이기 때문이다.

 

특히 해당 프로젝트를 진행하는데 얼만큼의 컴퓨팅자원, 즉 클라우드 상에서의 컴퓨팅 자원을 쓰는것이 좋은지를 결정해야 하는거고 그것을 결정하는 것은 바로 Spark가 작동하는 성능과 직결되기 때문에 제한된 예산에서 최적의 효율을 낼수 있는 컴퓨팅 자원을 세팅하고 하는것을 해야하기 때문에 필요하다.

 

Cluster

컴퓨터가 총 8대가 있다 1번부터 8번까지 컴퓨터를 한덩어리로 묶어서 서비스 하나의 단위 상품패키지화 시킨것

서비스 단위로 만든것을 클러스터라고 합니다.

이것은 내가 결정하는게 아니라 다양한 사양으로 존재하고 내가 맞춤으로도 할수도 있겠지만 보통 서비스 프로바이더 즉 아마존이라던가 마이크로소프트 애저 같은 이러한 클라우드 서비스 업체에서 클러스터 사양을 쓸 것인가를 우리가 정할수 있도록 만들어놓는다.

 

즉 클러스터란 다수의 컴퓨터를 묶어서 서비스의 한단위로 만든것이 클러스터입니다.

 

Node

Spark에서는 Computer라고 부르지 않고 Node라고 부른다.

컴퓨터라고 부르지않는 이유가 이 각자의 컴퓨터가 서로 연계되어 있고 서로 상호연결이 되어있어서

Spark가 job을 처리할때 이 컴퓨터를 여러개를 쓰거나 아니면 적게쓰거나 

개수를 원하는 대로 개수를 쓰면서도 job을 분산 처리할수 있게 되기 때문이다.

Core

코어 즉 로지컬한 CPU이다. 16개의 cpu가 있고

예를들면 32GB 메모리가 있다고 하자

그리고 저장공간이 1TB이 있다.

 

이와 같이 클러스터 안의 노드는 각각의 세부사양을 가지고 있다.

이런것들이 spark입장에서는 여기있는 자원을 끌어다 쓰면서 최대 컴퓨터를 8대까지 사용할수있다 이것을 한덩어리로 묶어서 클러스터라고 하는 서비스 단위로 만들었다.

 

Executor

Executor는 구성단위이기 보다는 Spark가 어떤 job을 가지고 처리하는데 있어서 어떤 단위로 처리할거냐의 그 단위를 말할때 바로 executor라는 개념이 존재한다.

 

즉 엑시큐터는 스파크가 작업을 분산 처리할때 실제 작업을 할당하는 단위 입니다.

엑시큐터는 각각의 컴퓨터의 복수로 존재할수도 있고, 클러스터 하나에 클러스터의 엑시큐터가 각각 다르지 않다.

엑시큐터는 정해진 갯수로 존재한다.

 

보통 엑시큐터는 4개 또는 8개로 짝수로 존재한다.

그래서 이 엑시큐터가 실제로 스파크가 명령을 했을때 실제로 일을 처리하는것

엑시큐터는 코어를 할당받아서 코어를 가지고서 실제로 일을 처리합니다.

즉 연산의 최소단위인 코어를 가지고 병렬 처리하면서 실제로 일감을 받아서 그 일감을 스케줄링 잡아서 코어라고 하는 계산기를 여러대를 써가면서 엑시큐터가 작업을 하게되는겁니다.

 

8대의 컴퓨터를 사용한다고 가정했을때 마스터노드를 1개를 지정해주고 엑시큐터의 값과 코어가 몇개 필요하고 메모리가 얼마나 필요할지 계산하는모습..

 

 

'Spark' 카테고리의 다른 글

[Spark] - 12bestCodingQuestions - 스파크 핵심 기법  (0) 2026.03.21
[Spark] - DataFrame  (0) 2026.03.18
[Spark] - Partition&Shuffle  (0) 2026.03.17
[Spark] - Spark UI,Lazy Oparation, Action  (0) 2026.03.17
[Spark] - 실전 스파크  (0) 2026.03.16