Cloud

Cloud/AWS

[AWS] Iceberg, Partition Transform이 감춰진 파티션을 가능하게 하는 메커니즘

‘감춰진 파티션( Hidden Partition )’이란?Iceberg에서는 파티션 컬럼을 테이블 스키마에 노출하지 않고도 파티셔닝 효과를 얻도록 설계했음.PARTITIONED BY (days(ts), bucket(16, id)) 처럼 Transform만 메타데이터에 기록하고, 실제 데이터 파일 경로에는 날짜·버킷 값이 드러나지 않음.덕분에 사용자는 WHERE ts BETWEEN … 같은 원본 컬럼 조건만 써도 자동으로 파티션 프루닝이 이뤄짐. 메커니즘: Transform → Partition Tuple → ManifestPartition Spec테이블 메타데이터에 _Transform 식_과 Field-ID가 저장됨.쓰기 시점엔진(Spark/Flink 등)이 각 레코드에 Transform을 적용해 Par..

Cloud/AWS

[AWS] Iceberg 스냅샷 기반 ACID 트랜잭션에서 원자적 rename만으로 동시성을 보장할 수 있는 이유

Iceberg 커밋 흐름 : “쓰기 → 스냅샷 작성 → 원자적 rename (or CAS)”현재 상태 읽기작업자는 테이블이 가리키는 메타데이터 파일 Mₙ(= 스냅샷 Sₙ)을 가져옴.새 스냅샷 생성데이터·매니페스트를 작성한 뒤 새 메타데이터 파일 Mₙ₊₁(→ Sₙ₊₁) 을 임시 위치에 기록함.커밋 시도Hadoop/HDFS·POSIX FS일 때는 rename(temp, Mₙ₊₁)를,Hive/Glue/REST Catalog일 때는 “ALTER TABLE … SET metadata_location=Mₙ₊₁” 같은 CAS(Compare-and-Swap) 호출을 “기존 값이 그대로일 때만” 수행함.- 성공 ⇒ 새 스냅샷이 즉시 일관성 있게 노출- 실패(동시 커밋 충돌) ⇒ 작업자가 최신 Mₙ₊ₖ을 다시 읽어 리베이..

Cloud/AWS

[AWS] Iceberg 메타데이터 3-계층이 해결하는 문제

Iceberg 메타데이터 3-계층이 해결하는 핵심 문제Metadata File (table-metadata)- 스키마·파티션 사양, 현재 스냅샷 ID, 이전 스냅샷 히스토리- 원자적 커밋: 새 파일을 쓰고 “이름만 바꾸기(atomic rename)”- HMS(외부 DB)에 의존하지 않으므로 글로벌 락 불필요Manifest List- 한 스냅샷이 참조하는 Manifest 경로 + 통계- 쿼리 계획 시 Manifest 자체를 빠르게 프루닝 → 파일 수↑에도 계획 시간 일정Manifest- 데이터 파일 경로, 파티션 값, 열별 min/max 등- 파일 리스트·통계 캐시 역할- 파일 시스템(예: S3) 전체 디렉터리 스캔 제거 해결될 문제들메타스토어 병목·락 경쟁Hive ACID는 HMS 테이블·파티션 행을 잠..

Cloud/AWS

[AWS] Apache Iceberg 개념

Apache Iceberg 탄생 배경과 미션Netflix가 2018년 내부 데이터레이크 품질 문제를 해결하려고 설계한 Iceberg는 2020년 Apache Top-Level 프로젝트로 승격되었음.목표는 “파일을 테이블처럼” 관리하면서도 아래 내용을 포함함.- 높은 동시성(수천 개의 병렬 작업)- 스냅샷 기반 ACID 트랜잭션- 엔진 중립성을 동시에 보장AWS S3, HDFS, GCS 등 객체 저장소 위에서 그대로 동작하도록 설계했음. 메타데이터 레이어 구조Iceberg는 세 겹의 메타데이터로 테이블을 추상화함. Metadata File (v1.metadata.json)- 스키마·파티션 사양·스냅샷 목록- 커밋 단위로 교체(atomic rename)Manifest List- 스냅샷이 참조하는 Manife..

Cloud/AWS

[AWS] EMR JVM 모니터링

EMR JVM 모니터링Amazon EMR 클러스터에서 Spark, Hadoop, YARN 등과 같은 JVM 기반 프로세스를 실시간으로 모니터링하기 위해서는 크게 다음과 같은 방법이 있음. 1. JMX 기반의 직접 모니터링2. Ganglia, CloudWatch, Datadog 등 외부 툴/에이전트를 통한 모니터링3. Spark UI, YARN UI와 같은 내장 모니터링 인터페이스를 혼합하여 사용하는 방법 JMX 기반 실시간 모니터링 : JMX 개요JVM 내부 Heap 사용량, GC(가비지 컬렉션) 이벤트, 스레드 정보 등 다양한 메트릭을 실시간으로 노출하는 표준 인터페이스.com.sun.management.jmxremote 등의 JVM 옵션을 통해 원격에서 모니터링 도구(VisualVM, JConsole..

Cloud/AWS

[AWS] EMR의 SPARK_DAEMON_JAVA_OPTS

SPARK_DAEMON_JAVA_OPTSSPARK_DAEMON_JAVA_OPTS는 Spark의 “데몬 프로세스(daemon processes)”에 적용될 JVM 옵션을 지정하는 환경 변수임.여기서 “데몬 프로세스”란 Spark Master, Spark Worker, Spark History Server 등과 같이 장기간 동작하면서 클러스터/작업을 관리하거나 모니터링하는 Spark의 백그라운드 프로세스를 말함.Spark Driver나 Executor 프로세스와는 별도로, Spark 클러스터 자체를 운영하기 위한 프로세스에 적용되는 설정이라는 점이 핵심임. SPARK_DAEMON_JAVA_OPTS의 역할1. Spark 마스터와 워커, 히스토리 서버 등에 공통적으로 적용Spark에는 Master, Worker..

Cloud/AWS

[AWS] 파이썬으로 EMR 클러스터 생성

파이썬으로 EMR 클러스터 생성AWS에서 EMR Spark 클러스터를 생성하는 가장 대표적인 방법은 boto3(AWS SDK for Python)를 사용하는 것임.이때, run_job_flow 메서드를 통해 EMR 클러스터를 손쉽게 생성할 수 있음.아래 예시는 기본적인 Spark 클러스터를 파이썬 코드로 구성하는 예시임. 사전 준비 사항1. AWS CLI 설정로컬 환경에서 AWS CLI를 설치하고, aws configure 명령어를 통해 자격 증명(AWS Access Key ID, Secret Access Key)과 기본 리전을 설정해야 함.또는, EC2 인스턴스 등에서 IAM Role을 통해 호출할 수도 있음.이 경우 별도의 키 설정이 필요 없음. 2. boto3 설치pip install boto3 3..

Cloud/AWS

[AWS] EMR의 유형별 노드

EMR의 유형별 노드AWS EMR(Amazon Elastic MapReduce) 클러스터는 다음 세 가지 유형의 노드로 구성됨. 1. 프라이머리 노드(Primary Node)2. 코어 노드(Core Node)3. 태스크 노드(Task Node) 여기서 각 노드는 Hadoop/Spark 등 다양한 빅데이터 프레임워크를 실행하는 데 필요한 역할을 분담함.클러스터 운영 및 확장/축소에도 중요한 영향을 미침. 프라이머리 노드 : 주요 역할1. 클러스터 전반 제어 및 코디네이션프라이머리 노드는 클러스터를 제어하고 관리하는 핵심 역할을 수행함.전통적인 용어로는 "마스터 노드(Master Node)"라고도 하며, 아래와 같은 주요 프로세스를 실행함. Hadoop YARN ResourceManager: 전체 클러스터에..

Cloud/AWS

[AWS] EMR(Elastic MapReduce) 개념

EMRAmazon EMR(Amazon Elastic MapReduce)는 AWS(Amazon Web Services) 상에서 대규모 데이터를 신속하고 경제적으로 처리하기 위한 분산 처리 플랫폼임.Apache Hadoop, Spark, Hive, HBase 등 다양한 오픈 소스 분석 엔진과 서비스를 실행할 수 있도록 관리형 클러스터를 제공하므로, 빅데이터 워크로드를 안정적으로 운영하고 민첩하게 확장할 수 있는 것이 특징임. 핵심 개념 및 아키텍처 : AWS EMR의 구성 요소1. 클러스터(Cluster)AWS EMR에서는 “클러스터”라는 단위로 데이터 처리를 수행함.클러스터는 하나의 마스터 노드(Master Node), 0개 이상의 코어 노드(Core Node), 0개 이상의 태스크 노드(Task Node..

Cloud/AWS

[AWS] istio

IstioIstio는 클라우드 네이티브 애플리케이션에서 마이크로서비스 아키텍처를 관리하기 위해 설계된 서비스 메쉬 플랫폼임.Istio는 서비스 간 통신, 트래픽 관리, 보안, 관찰 가능성 등을 지원하여 복잡한 분산 시스템의 운영을 단순화함. Istio의 기본 개념1. 서비스 메쉬서비스 메쉬는 애플리케이션 레벨에서 네트워크 통신을 관리하기 위한 레이어임.각 서비스 간 통신을 추상화하고 제어할 수 있게 함.Istio는 서비스 메쉬의 대표적인 구현체로, 서비스 간 데이터 플레인과 제어 플레인을 제공함. 2. 주요 목표A. 트래픽 관리: 서비스 간 트래픽 라우팅, 로드 밸런싱, 장애 복구 등 제어.B. 보안: 서비스 간 통신 암호화(TLS) 및 인증/인가 제공.C. 관찰 가능성: 서비스 메트릭, 로그, 트레이싱..

박경태
'Cloud' 카테고리의 글 목록