https://www.youtube.com/watch?v=Wo6utoIC2Jw
- Spark platform / Python Libs / Batch Query Engine 묶음
- Workflow Manager와 연결되어있음
- Workflow Manager는 분할, 분석이 아닌 Task를 수행하는 엔진
- Spark에게 task를 시킴
Python Libs
Pandas
- 이름 유래
- Panel Data
- 여러 개체들을 복수의 시간에 걸쳐서 추적하여 얻는 데이터
- tabular data를 다룸
- row / column으로 이루어진 테이블 데이터
- DataFrame이라 부름
Boto3
- Python으로 Amazon Web service(S3, EC2)에 접근하게 해주는 라이브러리
Dask
- Python을 병렬로 처리할 수 있도록 만들어줌
- Numpy / Pandas / Scikit-Learn
Ray
- Dask와 비슷함
- Dask는 중앙 스케줄러가 존재
- Ray는 bottom-up으로 테스크를 나눔 (더 빠름)
- 용도는 다름 (확인필요)
Spark Platform
Spark
- 대규모 데이터 처리를 위한 통합 분석 엔진 (빠르고 범용적인)
- 오픈소스 분산 다목적 클러스터 컴퓨팅 프레임워크
- 분산 처리를 위해
- 범용(여러가지 용도)으로
- 여러 대의 컴퓨터로 나누어서 처리할 수 있는
Hadoop vs Spark
- 데이터 처리
- 하둡은 batch processing만 가능
- 처리 속도
- Spark는 메모리에 캐싱하여 더 빠름
- 하둡은 HDFS를 기반으로 처리하여 느림
- 기본 아이디어
- HDFS가 느리니 RAM에서 처리하자
- 쿼리마다 처음부터 읽어오지 않고, 한 번 RAM에 올려놓고 쿼리, 쿼리, ...
RDD (Resilient Distributed Datasets)
- 문제
- RAM은 빠르지만 깨질 수 있음(휘발성)
- 어떻게 안전하게 사용할 수 있을까?
- RDD
- RAM을 read-only로 사용(Immutable)
- Resilient : 쉽게 복원되는
- lineage : DAG 형식으로 데이터가 어떻게 변환되어왔는지 기록, 이를 이용하여 복원
- lazy-execution
- 코딩해두고 "가져와"했을 때 실행함
- 자원이 배치될 상황을 고려하여 최적의 코스로 돌릴 수 있음
Spark Components
- Apache Spark Core
- RDD를 처리하는로직
- Spark SQL
- RDD 기반으로 SQL문장을 처리
- Spark Streaming
- RDD 기반 스트리밍 처리
- MLlib
- RDD 기반 머신러닝
- GraphX
- RDD 기반 그래프 처리
RDD - DataFrame - DataSet
- DataFrame
- tabular data를 RDD 기반으로 처리
- 더 빨라짐
- Dataset
- Untyped일 때는 DataFrame
- Typed일 때는 Dataset
Databricks
- Spark를 만든 개발자들이 만든 Spark 기반 솔루션
- Spark가 엔진이면 Databricks는 자동차
- Spark를 이용하여 구현해야하는데 이를 구현해놓은 것
- Azuer / AWS
Amazon EMR
- Elastic MapReduce
- Amazon의 클라우드 데이터 플랫폼
- 빅데이터 프레임워크(Spark, Hive, Presto) 등을 지원
- Databricks와 비슷
- Databricks와 비교하여 규모에 따라 가격 차이가 있음
Batch Query Engine
Hive
- HDFS에 있는 데이터를 쿼리하기위한 엔진
- SQL을 작성하면, MapReduce job으로 변환되어 실행
- Spark SQL이 있는데?
- Hive의 장점이 있음
- 1. Meta store를 통해 Hive와 연결되어 있는 meta data를 가지고 있음
- 어떤 데이터를 가지고 있는지, 테이블, 파티션 정보, ...
- Spark가 이 meta store를 그대로 이용하여 더 빠르게 실행 가능 - 2. Hive는 JDBC, ODBC 등 다양한 데이터베이스와 이미 연결
- Hive를 실행하는 엔진으로 Spark를 쓴다
- Hive 쿼리를 Spark를 이용하여 실행
'데이터 엔지니어링 > 데이터 플랫폼' 카테고리의 다른 글
[데이터플랫폼] 최신 데이터 인프라 이해하기 #4 - ETL/ELT 도구들 (dbt, Airflow, Dagster, Prefect) (0) | 2022.04.24 |
---|---|
[데이터플랫폼] 최신 데이터 인프라 이해하기 #3 - ETL/ELT 도구들 (Fivetran, Stitch, Matillion, Panoply) (0) | 2022.04.24 |
[데이터플랫폼] 최신 데이터 인프라 이해하기 #2 - 데이터 소스 (0) | 2022.04.24 |
[데이터플랫폼] 최신 데이터 인프라 이해하기 #1 - 기본 개념과 단어 설명 (0) | 2022.04.24 |
[데이터플랫폼] 데이터 파이프라인이란 (0) | 2022.04.24 |