Data
-
Databricks(데이터브릭스) Platform 아키텍쳐 및 주요개념 살펴보기Data 2021. 6. 12. 16:16
Apache Spark(아파치 스파크) 학습을 위한 도커 환경 셋업하기 (feat. Zeppelin) 이 글에서는 빠르게 아파치 스파크를 학습할 수 있도록 도커 기반의 스파크 환경을 구성하는 방법과 간단한 내부 구조에 대한 설명을 다룹니다. docker-compose up Spark 실행해보기 docker-compose up 먼저 kadensungbincho.tistory.com 데이터브릭스는 UC Berkeley에서 스파크를 만든 엔지니어들이 설립한 회사로 스파크는 물론, Delta Lake, MLFlow와 Koalas까지 데이터 환경의 굵직한 오픈소스를 만들며 빠르게 성장하는 클라우드 'Lakehouse Platform' 서비스를 제공하고 있습니다. 이번 글에서는 주요 서비스의 아키텍쳐와 개념을 살펴..
-
Apache Spark(아파치 스파크): Adaptive Query Execution이란?Data 2021. 6. 9. 22:29
스파크 SQL의 쿼리 옵티마이저는 룰베이스 또는 코스트 기반의 2가지 방식을 가지며, 꾸준하게 개선이 이뤄져 왔습니다. 특히 코스트 기반의 최적화는 적절한 join 타입을 선택하거나, join 순서를 조정하는 등을 다양한 최적화를 담당합니다. 기존의 Cost-based optimization (CBO)는 아래와 같은 한계가 존재합니다: Stale 또는 잃어버린 통계치는 부정확한 예측을 발생 통계치 수집에 많은 비용이 들어감 Predicates이 UDFs를 포함한 경우 통계치(selectivity, cardinality) 수집이 불가능함 데이터가 빠르게 변화하는 경우에는 하드코딩된 hints가 잘 동작하지 않음 Adaptive Query Execution (AQE)는 런타임 시 발생하는 다양한 통계치를 수..
-
Apache Spark(아파치 스파크): Dynamic Partition Pruning이란?Data 2021. 6. 6. 21:20
스파크 3.0 Release [2]에서 추가된 Dynamic Partition Pruning(DPP)은 아래와 같이 전반적인 성능 향상과 더불어, 특정 쿼리에서는 x100에 가까운 최적화를 가능하게 해주었습니다. 이번 글에서는 이 DPP에 대해서 자세히 알아보겠습니다. Pruning이란? pruning의 의미를 찾아보면 '가지치기'라는 뜻을 가지고 있습니다. 일반적인 데이터 시스템에서의 pruning은 얻고자 하는 데이터를 가지고 있지 않은 파일들을 읽지 않고 스킵하는 형태의 최적화를 말합니다. Pruning의 의미를 이해했다면, 이번 글에서 설명드릴 Dynamic한 형태를 설명드리기 전에 먼저 반대되는 형태인 Static한 형태를 알아볼 필요가 있겠습니다. Static Partition Pruning ..
-
Spark SQL이란?Data 2021. 6. 6. 13:35
Apache Spark RDDs(Resilient Distributed Datasets)의 이점과 특징 (feat. DSM) 아파치 스파크의 중심에는 데이터 모델인 Resilient Distributed Datasets (RDDs)가 존재합니다. 스파크 연구의 연혁을 살펴보더라도 핵심인 RDDs에 대한 설계 및 구현이 끝난 이후(2012년 4월, [1]) 폭발적으 kadensungbincho.tistory.com Spark SQL은 정형 데이터 처리를 위한 스파크 모듈입니다 [3]. 기본적인 Spark RDD API와 다르게, 스파크 SQL 인터페이스는 데이터와 수행되는 컴퓨팅과 관련한 구조에 대한 정보를 제공합니다. 내부적으로 스파크 SQL은 이러한 추가 정보를 사용하여 최적화를 수행하게 되는데요. 이..
-
Apache Spark RDDs(Resilient Distributed Datasets)의 이점과 특징 (feat. DSM)Data 2021. 6. 3. 23:05
아파치 스파크의 중심에는 데이터 모델인 Resilient Distributed Datasets (RDDs)가 존재합니다. 스파크 연구의 연혁을 살펴보더라도 핵심인 RDDs에 대한 설계 및 구현이 끝난 이후(2012년 4월, [1]) 폭발적으로 다양한 모듈이 이 RDDs에 기반하여 추가되는 것을 알 수 있습니다. 이번 글에서는 RDDs를 중심으로 아래와 같은 부분들을 알아보고자 합니다: RDDs의 기원인 DSM RDDs는 어떻게 다르며, 어떤 이점을 가지는가? RDDs의 주요 특징 RDDs의 기원인 DSM RDDs를 알아보기 전에, 80년대부터 활발하게 연구되었으며 RDDs와 유사하게 물리적으로 여러 노드에 존재하는 메모리를 공유하여 추상화를 제공하는 Distributed share memory (DSM)..
-
Apache Spark란?Data 2021. 6. 1. 22:18
아파치 스파크는 대량의 데이터 처리를 위한 통합 분석 엔진으로 오픈소스입니다. 스파크는 Java, Scala, Python과 R로 이뤄진 하이레벨 API와 최적화 엔진을 제공하여 기본적인 '실행 그래프'를 지원합니다. 또한, 스파크는 SQL과 정형 데이터 처리를 위한 Spark SQL, 머신러닝을 위한 MLlib, 그래프 프로세싱을 위한 GraphX, 그리고 스트림 처리를 위한 Structured Streaming과 같은 다양한 하이레벨 도구들을 지원합니다 [1]. 이 글에서는 아래와 같은 부분을 다뤄보려 합니다: 스파크는 어떤 목적으로 만들어졌나? 스파크 RDD와 연관된 연구주제들 스파크 디자인의 철학 스파크는 어떤 목적으로 만들어졌나? 스파크는 UC 버클리의 AMPLab에서 2014년 공식적으로 릴리..
-
Apache Spark(PySpark) Matrix Factorization 최적화하기Data 2021. 5. 15. 15:55
이번 글에서는 데이터 엔지니어로 근무하며 진행한 MF 최적화 작업을 바탕으로, 최적화 시에 어떠한 관점으로 접근했는지와 관련 자료를 정리해보려 합니다. Reference [1] Advanced Apache Spark Training - Sameer Farooqui (Databricks) [2] Tuning Apache Spark for Large-Scale Workloads [3] SOS: Optimizing Shuffle I/O [4] Deep Dive: Apache Spark Memory Management [5] Matrix Computations and Optimization in Apache Spark [6] Getting The Best Performance With PySpark [7] Ap..
-
[Hands On] 아파치 에어플로우 도커환경에서 핸즈온 - #1 기초 (Apache Airflow)Data 2021. 3. 1. 21:22
아파치 에어플로우는 '작업흐름'을 코드를 통해 작성하고, 스케쥴하고, 모니터링하기 위한 데이터 워크플로우 매니지먼트 도구입니다. 여기서 작업흐름은 하나이 쉘 스크립트를 실행하는 것, 웹사이트에 접근에 특정 수행을 통해 데이터를 다운 받고 다운이 받아졌다면 파싱하여 슬랙 알림을 보내는 것 등 다양한 의존적인 작업들의 흐름이 포함됩니다. 이 글에서는 도커 환경에서 아파치 에어플로우 클러스터를 빠르게 올려서 아래와 같은 사항들을 중점으로 설명드리도록 하겠습니다: 준비사항 주요개념 간단한 작업 수행 시 일어나는 일들 아파치 에어플로우 클러스터 아키텍쳐 준비사항 및 클러스터 띄우기 아래 도커 환경에서 아파치 에어플로우를 실행하기 위해서는 아래와 같은 것들이 필요합니다: Git Docker 및 Docker Comp..