Apache Spark study (1)

jihunnit·2023년 12월 23일
0

데이터엔지니어링

목록 보기
1/3

Apache Spark란?

아파치 스파크는 데이터 센터나 클라우드에서 대규모 분산 데이터 처리를 하기 위해 설계된 통합형 엔진임


Apache Spark의 핵심 특징 4가지

1. 속도

  • 중간 연산을 위한 메모리 저장소를 지원하여 Hadoop Map-Reduce보다 빠름
  • 또한, 질의 연산을 DAG(Directed Acyclic Graph)로 구성하고, DAG 스케쥴러 및 쿼리 최적화 모듈은 효율적인 연산 그래프를 만들고, 클러스터의 워커 노드에서 병렬 수행될 수 있게 함
  • 물리엔진 텅스텐(Tungsten)은 whole-stage code generation 기법을 사용하여 실행을 위한 간결한 코드를 생성함
  • 디스크 I/O의 제한적 사용

2. 사용 편리성

  • 스파크는 데이터 프레임이나 데이터세트 같은 고수준 데이터 추상화 계층 아래 유연한 분산 데이터 세트 RDD(Resilent Distributed Dataset)이라는 자료구조 구축. 단순성 실현함
  • 연산(Operation)의 종류로 트랜스포메이션(Transformation)과 액션(Action) 두 가지만 가지고 프로그래밍 할 수 있게 해서 단순성 실현

3. 모듈성

  • 스파크 연산은 다양한 타입의 워크로드에 적용 가능하며, 지원하는 프로그래밍 언어(Scala, Python, Java, R)로 표현 가능
  • 통합 라이브러리와 여러 컴포넌트들을 제공하고 이를 하나의 엔진 안에서 연동할 수 있음

4. 확장성

  • 스파크는 저장보다는 빠른 병렬 연산 엔진에 초점이 맞추어져 있음. (이 점이 저장과 연산을 모두 포함하는 Apache Hadoop과의 차이) 이는 스파크가 수많은 데이터 소스에서 데이터를 읽고, 이를 메모리에서 처리 가능하다는 의미

그 외 특징

  • 스파크는 JVM 위에서 동작. 즉 어떤 언어로 작성하든 실제 코드는 고도로 경량화된 바이트코드로 변환됨
  • 스파크 SQL은 ANSI SQL 2003 표준과 호환.
  • 데이터 과학을 위한 MLlib 존재
  • 그래프를 조작하고 그래프 병렬 연산을 수행하게 해주는 GraphX 라이브러리 존재

아파치 스파크의 구성

  • 하나의 스파크 애플리케이션은 하나의 드라이버 프로그램으로 구성. 이 드라이버는 Spark Driver임. Spark Driver는 Spark Session을 생성하고,이것이 스파크 클러스터의 분산 컴포넌트들에 접근함

스파크 드라이버(Spark Driver) :

  • Spark Session 객체 초기화
  • Cluser Manager와 통신하며 스파크 이그제큐터들을 위해 필요한 자원 요청
  • 모든 스파크 작업을 DAG 연산 형태로 변환 및 스케줄링하여 각 실행 단위를 태스크로 나눔
  • 나눈 태스크들을 스파크 이그제큐터에 분배

스파크 세션(Spark Session) :

  • 모든 스파크 기능을 한 군데에서 접근할 수 있는 시작점 제공

클러스터 매니저(Cluser Manager) :

  • 스파크 애플리케이션이 실행되는 클러스터에서 자원을 관리 및 할당하는 책임
    현재 네 종류의 클러스터 매니저(standalne, hadoop YARN, Mesos, K8s) 지원

스파크 이규제큐터(Spark Executor) :

  • 클러스터의 각 워커 노드에서 동작. 드라이버의 프로그램과 통신하며 워커에서 태스크를 실행하는 역할
    (대부분 배포 모드에서 노드 당 하나의 이그제큐터만 실행)
profile
인간은 노력하는 한 방황한다

0개의 댓글