apachespark
-
Apache Spark(아파치 스파크) Web UI 관찰하기Data 2021. 7. 1. 20:49
스파크 애플리케이션의 상태를 파악하는데에 있어서 Web UI는 매우 중요한 역할을 합니다. 이번 글에서는 Spark Web UI를 살펴보며, 어떤 부분들을 고려할 수 있는지 알아보도록 하겠습니다. 살펴볼 세부적인 사항들은 아래와 같습니다: Jobs: 스파크 애플리케이션의 모든 job에 대한 요약 정보 제공 Stages: 모든 jobs의 모든 stages의 현재 상태 요약 정보 제공 Storage: persisted RDD와 DataFrames 정보 제공 Environment: 다양한 환경 변수값 Executors: 애플리케이션을 위해 생성된 엑서큐터 정보 제공. 메모리와 디스크 사용량과 task, shuffle 정보 등 SQL: 애플리케이션이 Spark SQL 쿼리 실행 시 정보 제공 Streaming:..
-
Apache Spark(아파치 스파크) 학습을 위한 도커 환경 셋업하기 (feat. Zeppelin)Data 2021. 6. 20. 22:08
이 글에서는 빠르게 아파치 스파크를 학습할 수 있도록 도커 기반의 스파크 환경을 구성하는 방법과 간단한 내부 구조에 대한 설명을 다룹니다. docker-compose up Spark 실행해보기 docker-compose up 먼저 아래 코드를 실행하여 docker-compose up을 실행합니다: git clone https://github.com/kadensungbincho/de-hands-on.git cd de-hands-on/docker-apache-spark-zeppelin docker-compose up -d --build ... Starting spark-master ... done Starting spark-worker-2 ... done Starting spark-worker-1 ... d..
-
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..