Data Engineering/Spark

[Spark] 스파크에 대한 간단 스터디 1

쟈누이 2021. 6. 19. 19:21
반응형

 

1. 스파크란


스파크는 통합 컴퓨팅 엔진이며, 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합. 널리 쓰이는 언어(파이썬, 자바,스칼라,R) 을 지원하며 SQL 뿐만 아니라 스트리밍, 머신러닝에 이르기까지 넓은 범위의 라이브러리를 제공한다.

스파크에서 제공한느 전체 컴포넌트와 라이브러리

 

 

2. 스파크의 특징


HDFS 사용 하둡의 파일시스템 기반 동작
직관적 이해 스칼라 기반 최소화 코드로 작성
RDD – RDD 단위로 데이터 연산을 수행

 

 

 

 

3. 스파크 철학


1) 통합

  • 간단한 데이터 읽기부터 SQL 처리, 머신러닝 그리고 스트림 처리에 이르기까지 다양한 데이터 분석작업을 같은 연산 엔진과 일관성있는 API 로 수행할 수 있도록 설계.

 

2) 컴퓨팅 엔진

  • 통합관점의 중시하면서 기능의 범위를 컴퓨팅 엔진으로 제한, 그 결과 저장소 시스템의 데이터를 연산하는 역할만 수행할 뿐 영구 저장소 역할은 수행하지 않음. 내부에 데이터를 오랜 시칸 저장하지 않으며 특정 저장소 시스템을 선호하지 않음

 

 

3) 라이브러리

  • 스파크 컴포넌트는 데이터 분석 작업에 필요한 통합 API 를 제공하는 통합 엔진 기반의 자체 라이브러리

 

 

 

 

4. 스파크의 역할


  • 스파크는 클러스터의 데이터 처리 작업을 관리하고 조율
  • 클러스터 : 여러 컴퓨터 자원을 모아 하나의 컴퓨터처럼 사용 가능
  • 클러스터는 YARN과 같은 클러스터 매니저에서 관리한다. 사용자는 클러스터 매니저에 스파크 애플리케이션을 제출(submit)한다. 그러면 클러스터 매니저가 애플리케이션 실행에 필요한 자원을 할당

 

 

 

 

5. 스파크 애플리케이션


  • 스파크 애플리케이션은 드라이버 프로세스와 다수의 익스큐터 프로세스로 구성
  • 드라이버 프로세스 : 스파크 애플리케이션 정보의 유지 관리, 사용자 프로그램이나 입력에 대한 응답, 전반적인 익스큐터 프로세스의 작업과 관련된 분석, 배포 그리고 스케쥴링 역할
  • 익스큐터 : 드라이버가 할당한 코드를 실행, 진행 상황을 다시 드라이버 노드에 보고하는 두가지 역할 수행

 

 

 

 

6. 스파크의 DataFrame


  • 스파크의 데이터 프레임은 파이썬과 다르게 단일 컴퓨터가 아닌 수천 대의 컴퓨터에 분산되어 있음
  • 이유는 단일 컴퓨터에 저장하기에는 데이터가 너무 크거나 계산에 너무 오랜 시간 걸릴 수 있음
  • 모든 익스큐터가 병렬로 작업을 수행할 수 있도록 파티션이라 불리는 청크 단위로 데이터를 분할함. 파티션은 클러스터의 물리적 머신에 존재하는 로우의 집합을 의미
  • 만약 파티션이 하나라면 스파크에 수천 개의 익스큐터가 있더라도 병렬성은 1이 되며, 수백개의 파티션이 있더라도 익스큐터가 하나밖에 없다면 병렬성은 또한 1이 됨

 

 

 

 

7.     트랜스포메이션


  • 스파크의 핵심 데이터 구조는 불변성을 가짐. 즉 한번 생성하면 변경할 수 없음
  • 변경을 하려면 원하는 변경 방법을 알려줘야 하는데 이때 사용하는 명령을 트랜스포메이션이라고 부름
  • 추상적인 트랜스포메이션만 지정하면 액션을 수행해도 스파크는 실제 트랜스포메이션을 수행하지 않음

  • 지연 연산은 스파크가 연산 그래프를 처리하기 직전까지 기다리는 동작 방식을 의미. 스파크는 연산 명령이 내려진 즉시 데이터를 수정하지 않고 원시 데이터에 적용할 트랜스포메이션의 실행 계획을 생성함

 

 

1) 좁은 의존성

  • 각 입력 파티션이 하나의 출력 파티션에만 영향을 미친다
  • Where 절은 좁은 의존성을 가짐
  • 하나의 파티션이 하나의 출력 파티션에만 영향을 미침

 

2) 넓은 의존성

  • 하나의 입력 파티션이 여러 출력 파티션에 영향을 미침
  • 클러스터에서 파티션을 교환하는 셔플을 수행

 

 

 

8. 액션


  • 실제 연산 수행을 위해선 액션 명령을 내려야 함
  • 액션은 일련의 트랜스포메이션으로부터 결과를 계산하도록 지시하는 명령어
  • 콘솔에서 데이터를 보는 액션, 각 언어로된 네이티브 객체에 데이터를 모으는 액션, 출력 데이터 소스에 저장하는 액션 총 3가지 액션이 존재
  • 액션을 지정하면 스파크 잡이 실행

 

 

 

 

9. 스파크 UI


  • 스파크 잡의 진행 상황을 모니터링할 때 사용
  • Localhost:4040 의 주소를 사용함

 

반응형