본문 바로가기
츄Log/끄적끄적

Hadoop 에코시스템 먹방 -4. Spark & Yarn

by 츄츄🦭 2024. 6. 11.
728x90

Spark

> 데이터 병렬 처리를 위한 인메모리 분산 컴퓨팅 프레임워크임
> 다양한 스파크 라이브러리가 지원되며 데이터 분석, 그래프처리, 기계학습 등에 다양하게 사용됨
ex) Spark Streaming : 스트리밍 데이터 처리 라이브러리, Spark SQL : sql 처리 라이브러리, ...

Spark 구조

스파크는 Cluster Manager + Driver + Executor로 구성됨 

Cluster Manager
> 클러스터의 리소스를 관리하는 역할
> Hadoop YARN, 쿠버네티스, 스탠드얼론 등이 가능함

Driver
> 스파크 작업의 정보를 유지하고 관리하는 중심적 역할
> 클러스터 매니저로부터 리소스를 할당받아서 Executor를 실행시키고 작업을 스케줄링함
> 사용자의 코드를 DAG으로 변환하고 여러 task로 분할한 후 Executor에게 작업을 실행하도록 함
이렇게 나뉘어진 task는 각 Executor에게 전달되어 수행됨

Executor
> Driver가 할당한 task를 수행하는 프로세스임
> 외부 소스로부터 데이터를 읽고 쓸 수 있음
> 연산 결과를 메모리에 저장하여 빠른 작업이 가능함
> Spark App이 수행되는 내내 동작하여 사용되고 여러 thread에서 task를 수행함

 

장점
> MapReduce와 다르게 중간 결과물을 메모리에 저장하기에 처리 속도가 빠름
> 스파크는 자바 뿐만 아니라 파이썬, 스칼라 등 지원하여 접근성을 높임
> 다양한 라이브러리를 제공하므로 단순 데이터 분석이 아닌 복합적 작업이 가능함
> 클러스터 매니저로 여러 선택지기 있기에 목적에 따라 정할 수 있음

단점
> 메모리를 많이 사용하기에 장비의 메모리 관리가 중요함
> real-time 데이터 스트림 지원은 안됨. Spark Streaming 작업에서는 입력을 작은 batch로 나뉘어서 실행하는 것임



YARN

> MapReduce의 확장성과 속도 문제를 해소하기 위해 새로 개발된 프로젝트

728x90