전체 글
-
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년 공식적으로 릴리..
-
리눅스(Linux) 기초 개념SE Concepts 2021. 5. 29. 14:12
리눅스 커널 관련 책을 읽다가 200쪽을 넘어가던 중 읽기가 어려워 포기하고, 새로운 책을 찾아나섰습니다. 그러던 중 아마존에서 매우 평이 높아 읽기 시작하게된 [1]의 경우 매우 구성이 잘 되어 있어 추천하고 싶다는 생각을 하게 되었습니다. 이번 글에서는 [1]의 챕터 2를 요약하며, 리눅스를 이미 알고 있던 분들에게는 환기, 잘 모르시는 분들에게는 대략적인 소개가 될 수 있는 글을 기술해보려 합니다. 커널 보통 '운영체제'라는 용어는 2가지 다른 의미로 사용됩니다: 컴퓨터 리소스를 관리하는 중심 소프트웨어와 동반하는 여러 소프트웨어 도구(커맨드 라인 인터프리터, GUI, 파일 유틸리티, 에디터 등)로 포함된 패키지를 일컫는 경우 좀 더 좁은 개념으로 컴퓨터 리소스(CPU, RAM, 디바이스 등)를 관..
-
리눅스(Linux) 단일 호스트 부하 디버깅 (feat. 서버/인프라를 지탱하는 기술)SE General 2021. 5. 26. 23:19
이번 글에서는 보면서 '다시 한 번 곱씹어 내것으로 만들어야겠다'고 느낀 [1]의 '리눅스 단일 호스트 부하의 진상규명'을 내용요약을 중심으로 기술하였습니다. 부하 디버깅 관련 개념 및 방법과 실제로 리눅스의 어떤 명령어를 통해 디버깅이 가능한지를 다루며 아래와 같은 부분으로 이뤄져 있습니다: 부하 디버깅의 관점과 프로세스 부하란 무엇이며 어떻게 이루어져 있는가 부하 디버깅 관련 커맨드: ps, sar, vmstat 부하 디버깅의 관점과 프로세스 부하를 이해한다는 것은 OS의 상태를 이해한다는 것입니다. 그렇기에 OS가 어떻게 동작하는지, 리눅스 커널의 소스를 살펴보며 부하, 성능과 연관된 요소들이 어떻게 측정되는지 살펴보며 부하를 정확히 이해할 수 있습니다. 먼저 간단하게 표면적인 계측치를 먼저 살펴보..
-
메타인지를 높이는 방법Mental Model 2021. 5. 22. 08:51
메타인지(Metacognition)는 자신의 사고 프로세스에 대한 인식과 그러한 사고 프로세스 저변의 패턴을 이해하는 것입니다. 여기서 meta란는 단어는 "beyond" 또는 "on top of"를 의미합니다. 메타인지는 스스로의 사고 방식을 숙고하거나, 문제해결을 위해 어떤 전략을 어떻게 언제 쓸지 등 여러 형태를 가집니다. 일반적으로는 지식(metacognitive knowledge), 조절(metacogintive regulation), 경험(metacognitive experiences)이라는 3가지 부분으로 구성되어 있습니다 [1]. 지식: 각 개인이 인식을 행하는 주체로 스스로에 대해 그리고 다른 것에 대해 어떤 것을 알고 있는 것 조절: 인식의 통제와 배움을 돕는 활동을 통한 (메타인지 통..