On the journey of
[PySPARK를 활용한 데이터분석] 개괄 및 소개 본문
Experiences & Study/PySPARK & Data Engineering
[PySPARK를 활용한 데이터분석] 개괄 및 소개
dlrpskdi 2023. 8. 30. 08:13Chapter 1. 아파치 스파크 소개: 통합 분석 엔진
- 구글은 대규모 데이터의 저장, 처리, 분석, 검색, 추천 등을 위해 분산 처리 시스템과 빅데이터 기술을 중요하게 다뤄왔다.
- 그 결과, 구글 파일 시스템(Google File System), 맵리듀스(MapReduce), 빅테이블(BigTable) 등을 만들어냈다.
- 구글 파일 시스템(Google File System) : 대규모 클러스터에서 서버가 내결합성을 가지는 분산 파일시스템
- 하둡 파일 시스템(HDFS)
- 빅테이블(BigTable) : GFS를 기반으로 정형화된 대규모 데이터의 저장 수단을 제공
- HBase
- 맵리듀스(MapRedue) : 함수형 프로그래밍 개념을 기반으로 GFS와 빅테이블 위에서 대규모 데이터 분산 처리 프레임워크
- 분산 시스템의 특성 기반 데이터의 지역성과 랙(rack)의 접근성을 고려한다.
- 구글 파일 시스템(Google File System) : 대규모 클러스터에서 서버가 내결합성을 가지는 분산 파일시스템
하둡(Hadoop)
- 하둡(Hadoop)은 대규모 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크로, 구글의 GFS 논문에 기반해 비영리 재단인 아파치에서 오픈소스로 구현했다.
- 하둡은 대규모 데이터를 처리할 수 있으며, 높은 가용성, 확장성, 신뢰성을 제공하는 등 대규모 분산 시스템으로 동작하지만 몇 가지 단점이 있다.
- 번거로운 운영 복잡도로 인해 관리가 쉽지 않다.
- 맵리듀스같은 경우 많은 양의 setup 코드가 필요했으며, failure 대응 또한 불안정하다.
- 작업(job)이 각 태스크(task)로 나누어져 데이터 처리를 할 경우, 중간 과정(예를 들어 map(), shuffle()…)의 데이터를 로컬 디스크에 써야 했는데 반복적인 I/O 수행은 비효율적이다.
- 하둡은 머신러닝이나 스트리밍, SQL 질의 등 다른 워크로드와 연계에 대한 한계가 존재한다.
스파크(Spark)
- 하둡 맵리듀스 작업에 참여한 UC 버클리의 연구원들은 비효율적이고 배우기 힘든 단점들을 인지해 단순하고 빠르고 더 쉬운 스파크 프레임워크를 개발하는 것을 생각했다.
- 높은 내결함성, 높은 병렬성, 메모리에 중간값을 저장, 쉽고 구성이 간편한 API를 다양한 언어로 제공함 등을 초기 프로젝트 개발로 생각했다.
스파크 설계 철학의 4요소 - 속도, 사용편리성, 모듈성, 확장성
속도
- CPU와 메모리 성능의 향상 등으로 인한 속도 향상
- 스파크의 질의 연산은 방향성 비순환 그래프(directed acyclic graph, DAG)로 구성
- DAG의 스케줄러와 질의 최적화 모듈은 효율적인 연산 그래프를 만들어, 클러스터의 워커 노드 위에서 병렬 수행될 수 있도록 해줌
사용편리성
- 스파크는 고수준 데이터 추상화 계층(ex. 데이터프레임/데이터셋) 아래에 유연한 분산 데이터세트(RDD)라 불리는 단순한 논리 자료구조를 구축
- 연산의 종류로서 트랜스포메이션과 액션의 집합과 단순한 프로그래밍 모델을 제공
모듈성
- 문서화가 잘 된 API로 구성된 통합 라이브러리 제공
확장성
- 스파크는 빠른 병렬 연산 엔진에 초점 맞춰져있고, 저장과 연산을 분리
- 수많은 데이터 소스에서 데이터를 읽어 들여 메모리에서 처리가 가능해짐
통합된 분석
- 스파크는 하나의 단일 분산 처리 엔진 위에서 다양한 워크로드를 처리할 수 있는 통합된 컴포넌트 스택임
단일화된 스택으로의 아파치 컴포넌트
- 스파크는 네개의 다양한 워크로드를 위한 라이브러리로 스파크 SQL, 스파크 MLlib, 스파크 정형화 스트리밍, GraphX를 제공
- 각각의 컴포넌트는 스파크의 중심 장애 대응 엔진과는 별도로 존재, API를 써서 스파크 애플리케이션을 만들면 스파크 코어 엔진이 적절한 DAG로 변환해 실행
- 자바, R, 스칼라, SQL, 파이썬으로 스파크 코드를 작성해 정형화 API를 사용해도, 실제 코드는 고도로 경량화된 바이트코드로 변환된 후, 클러스터 전체에 나뉘어 워커 노드의 JVM에서 실행
스파크 SQL
- RDBMS 테이블이나 구조화된 데이터의 파일 포맷 데이터를 읽어 들일 수 있음
- 그 데이터로 영구적이거나 임시적인 테이블 생성 가능
- 자바, 파이썬, 스칼라, R 등으로 스파크 정형화 API를 사용하여, SQL 계통의 질의를 사용해 데이터를 바로 데이터 프레임으로 읽어 들일 수 있음
단일화된 스택으로의 아파치 컴포넌트
스파크 MLib
- 스파크에는 MLib라 불리는 범용 머신러닝 알고리즘들을 포함한 라이브러리가 들어있다.
- ‘Mlib’라는 표현은 아파치 스파크의 머신러닝 통합 라이브러리를 의미한다.
- MLib은 모델을 구축하기 위한 고수준 데이터 프레임 기반 API 기반으로, 여러 인기 있는 머신러닝 알고리즘을 제공한다.
- 이 API들은 특성들을 추출하고 변형하고 파이프라인을 구축하고 배포하는 동안 모델을 보존해준다.
- Mlib는 경사 하강법 최적화를 포함한 다른 저수준 ML기능을 포함한다. ex) LogisticRegression
스파크 정형화 스트리밍
- 아파치 스파크 2.0은 실험적으로 스파크 SQL엔진과 데이터프레임 기반 API위에 연속적 스트리밍 모델과 정형화 스트리밍 API를 소개했다.
- 스파크 2.2에서 정형화 스트리밍은 정식버전(GA, Generally available)이 되었다.
- 정형화 스트리밍 모델 하부에는 스파크 SQL엔진이 있어
- 장애 복구와 지연 데이터의 모든 측면을 관리하면서,
- 개발자들에게는 상대적으로 쉬운 스트리밍 애플리케이션 작성이 가능하도록 해 준다.
'Experiences & Study > PySPARK & Data Engineering' 카테고리의 다른 글
[PySPARK] 스파크 SQL과 데이터 프레임 Part 1 (0) | 2023.08.31 |
---|---|
[PySPARK] 정형 API 활용하기 (2) (0) | 2023.08.31 |
[PySPARK] Spark의 정형 API (1) (0) | 2023.08.31 |
[PySPARK] 다운로드 ~실행까지 (0) | 2023.08.30 |
[PySpark] 개괄 및 소개 (2) - 다운로드 전까지,데이터 분야 업무 (0) | 2023.08.30 |