Spark
[Spark] 성능 최적화 전략
2026.05.27
1. Data Skew(데이터 쏠림 현상)과 해결 방안(Salting)개념 : Spark는 데이터를 여러 파티션으로 나누어 병렬 처리하는데, 특정 파티션(또는 특정 키)에 비정상적으로 많은 데이터가 몰리는 현상이다.예시 : 은행 고객 데이터를 지역별로 그룹화(GroupBy)할 때, "서울" 데이터가 전체의 50%를 차지한다면? 다른 지역을 맡은 코어들은 1초 만에 작업이 끝나 대기 상태로 들어가는데, "서울"을 맡은 코어 혼자 시간을 잡아먹어 결국 메모리가 터져나간다(OOM). Spark의 전체 작업 시간은 "가장 늦게 끝나는 1개의 태스크"에 맞춰지므로 치명적인 병목 현상이 일어난다.해결 방안(Salting 기법) : 데이터 쏠림을 인위적으로 분산시키는 가장 대표적인 우회 기법이다. 음식에 소금을 쳐서..
Spark
[Spark] Spark SQL & DataFrame API
2026.05.26
Spark SQL과 DataFrame API가 단순히 쓰기 편한 것을 넘어 압도적인 성능을 내는 핵심 이유는 세 가지 최적화 기술에 있다. 사용자가 작성한 코드가 내부적으로 어떻게 튜닝되고 실행되는지, 순차적으로 알아보자. 1. Catalyst Optimizer(카탈리스트 옵티마이저)사용자가 짠 코드를 분석해 "가장 빠르고 효율적인 실행 계획"으로 재작성해 주는 똑똑한 컴파일러이다. 지연 평가(Lazy Evaluation)가 좋은 판단을 하게 해주는 핵심 엔진이다. 코드는 다음과 같은 4단계를 거쳐 최적화된다.1단계 - Unresolved Logical Plan(문법 검사)코드를 읽고 "오타는 없는지, 문법은 맞는지" 1차적으로 확인한다. 테이블이나 컬럼이 진짜 있는지는 모른다.2단계 - Logical..
Spark
[Spark] 데이터 처리 핵심 메커니즘
2026.05.26
1. 데이터 처리 관점에서의 역할(Cluster Manager, Driver, Executor)Driver(흐름 제어 및 메타데이터 관리) : 드라이버는 실제 데이터를 직접 연산하지 않는다. 대신 데이터가 클러스터의 어느 노드에 있는지(데이터 지역성, Data Locality)를 파악하고, 연산 코드(Task)를 데이터가 있는 곳으로 보내는 역할을 한다.주의점 : collect() 같은 액션 명령을 내리면, 각 익스큐터에 분산되어 있던 모든 결과 데이터가 드라이버의 메모리로 한꺼번에 모이게 된다. 데이터 크기가 드라이버 메모리보다 크면 Spark 프로그램이 뻗어버리는 OOM(Out Of Memory이 발생한다.Cluster Manager(데이터 비관여) : 데이터 처리 관점에서 클러스터 매니저는 데이터에..
Spark
[Spark] 아키텍처 및 기본 개념
2026.05.26
[기본 개념]Apache Spark는 빅데이터 분석 프레임워크로서, Hadoop의 단점을 보완하기 위해 등장하였다.Hadoop이 MapReduce 방식으로 디스크(HDFS)에 저장된 파일 데이터를 기반으로 배치 분석을 진행한다면, Spark는 디스크나 기타 다른 저장소(데이터베이스 등)에 저장된 데이터를 메모리로 올려서 분석하는 방식으로 배치 분석 뿐만 아니라, 스트리밍 데이터 양쪽 분석을 모두 지원한다. [Spark 아키텍처]Apache Spark의 기본 구조는 대규모 데이터를 빠르게 분산 처리하기 위해 마스터-워커(Master-Worker) 아키텍처를 기반으로 설계되어 있다.Spark 애플리케이션은 크게 드라이버(Driver), 클러스터 매니저(Cluster Manager), 그리고 여러 대의 워커 ..
DAP
[DAP 전문가 가이드] 5.1.2 무결성 설계
2025.04.30
데이터 무결성- 데이터의 정확성, 일관성, 유효성, 신뢰성을 위해 무효 갱신으로부터 데이터를 보호하기 위해 무결성 설계가 필요하다. 데이터 무결성 종류종류설명실체 무결성실체는 각 인스턴스를 유일하게 식별할 수 있는 속성이나 속성 그룹을 가져야 한다.영역 무결성컬럼 데이터 타입, 길이, 유효 값이 일관되게 유지되어야 한다.참조 무결성데이터 모델에서 정의된 실체 간의 관계 조건을 유지하는 것이다.사용자 정의 무결성다양하게 정의될 수 있는 비즈니스 규칙이 데이터적으로 일관성을 유지하는 것이다. 데이터 무결성 강화 방법- 데이터 무결성은 데이터 품질에 직접적인 영향을 준다. 프로그램이 완성되고 데이터가 축적된 후 데이터 클린징을 하거나 무결성 방법을 강구할 때는 많은 비용이 발생된다.- 데이터 품질을 확보하기..