분류 전체보기 108

Trino 쿼리를 통한 Iceberg 내부 살펴보기

📌 1. Iceberg 파일 구조 개요Iceberg 테이블은 HDFS, S3, HDFS-compatible storage 등에 저장되며 크게 두 가지 계층으로 나뉩니다:table_name/ ├── data/ # 실제 데이터 파일 (Parquet/ORC/Avro) │ ├── ...partition.../ │ │ └── 00000-aaaa.parquet │ └── ... └── metadata/ # 테이블 스냅샷과 스키마/파티션 정의 ├── version-hash.json ├── v0001.metadata.json ├── v0002.metadata.json └── snapshots/ 구성 요소데이..

Tools/Iceberg 2025.07.31

Iceberg에서 Tagging을 활용한 데이터 Snapshot 관리

1. Iceberg에서 Tagging의 개념Iceberg의 Tag는 특정 시점의 스냅샷을 이름 기반으로 고정 보존할 수 있는 기능입니다.스냅샷: 테이블의 특정 시점 상태 (데이터 파일 목록 + 메타데이터)태그(Tag): 스냅샷에 붙이는 사용자 정의 라벨목적: 보존(retention) 정책에서 제외하거나, 특정 분석/재처리를 위해 고정 시점 참조ALTER TABLE db.table CREATE TAG `month_end_202507` AS OF VERSION 4151342690114749344 RETAIN 365 DAYS; AS OF VERSION : 특정 스냅샷 버전 지정RETAIN : 이 태그를 최소 며칠 동안 보존할지 설정 (만료 보호 기간) 2. Expire Snapshots와 Tagging의 상호..

Tools/Iceberg 2025.07.31

JVM (Java Virtual Machine) 구조 상세 설명

JVM은 **자바 바이트코드(.class 파일)**를 실행하기 위한 가상 머신이에요.구조적으로는 크게 클래스 로더, 런타임 데이터 영역, 실행 엔진, 네이티브 인터페이스로 나뉘어요.1️⃣ 클래스 로더 (Class Loader Subsystem)역할: .class 파일(바이트코드)을 메모리로 적재해서 런타임 영역에 올림동적 로딩(Dynamic Loading): 실행 중 필요한 클래스만 메모리에 로드주요 단계Loading클래스 파일을 읽어 Method Area에 로드LinkingVerification: 바이트코드가 JVM 규격에 맞는지 검사Preparation: static 변수에 메모리 할당 & 기본값 초기화Resolution: 심볼릭 참조(클래스명, 메소드명 등)를 실제 메모리 주소로 변경Initiali..

파이썬의 동작 과정

🐍 파이썬 ↔ C 관계 & 가상환경1. 파이썬과 C의 관계파이썬(특히 CPython)은 사실상 C로 구현된 인터프리터예요.CPython: 가장 널리 쓰이는 파이썬 구현체 (Python 공식 배포판)핵심 원리:파이썬 소스 코드 → **바이트코드(.pyc)**로 컴파일이 바이트코드를 **C로 작성된 인터프리터(CPython VM)**가 실행파이썬 객체(PyObject)는 C 구조체로 관리됨즉:파이썬은 "문법과 문화를 가진 언어"CPython은 "C로 만들어진 실행기"a = 10 a는 스택에 참조 저장10은 힙에 PyLongObject라는 C 구조체로 생성👉 파이썬에서 int, list 같은 객체들은 실제로 C 언어 구조체에 불과함. 2. 왜 C 기반으로 동작할까?성능: C는 저수준 언어라서 메모리와 C..

파이썬 메모리 구조 개요

🐍 파이썬 메모리 구조 & GC 정리1. 메모리 구조 개요파이썬 인터프리터(CPython 기준) 메모리 구성:스택(Stack)함수 호출 시 로컬 변수, 참조 저장함수 종료 시 자동 해제실제 데이터가 아닌 객체 참조(포인터) 저장힙(Heap)모든 파이썬 객체(list, dict, 사용자 정의 객체 등) 저장GC와 메모리 풀(Pymalloc) 관리크기 동적 할당코드/전역 영역전역 변수, 상수, 함수 정의 저장프로그램 종료 전까지 유지2. 힙 메모리와 객체 구조모든 객체는 PyObject 구조체로 관리됨.typedef struct { Py_ssize_t ob_refcnt; // 참조 카운트 struct _typeobject *ob_type; // 객체 타입} PyObject;ob_re..

Apache Iceberg 기본 동작 확인 및 실습 정리

📊 demo.analytics_users 테이블 상태 변화 요약Snapshot 단계 작업 내용 테이블 상태 (id, name)초기 생성INSERT (Alice, Bob)(1, 'Alice'), (2, 'Bob')Snapshot 2DELETE id = 2(1, 'Alice')Snapshot 3UPDATE id = 1(1, 'Charlie')Snapshot 4MERGE INTO (id = 3)(1, 'Charlie'), (3, 'David')Snapshot 5ROLLBACK to Snap 1(1, 'Alice'), (2, 'Bob')Snapshot 6INSERT (Eve)(1, 'Alice'), (2, 'Bob'), (4, 'Eve')✅ 1. Iceberg 테이블 생성 및 데이터 삽입📌 Spark SQL..

Tools/Iceberg 2025.07.06

Trino와 HyperLogLog 알고리즘

🧠 HyperLogLog핵심 아이디어"해시값에서 가장 긴 앞자리 0의 개수를 보면, 얼마나 많은 고유 값이 있었는지 추정할 수 있다."원소들을 해시 함수로 변환하고,해시값의 **이진 표현에서 가장 앞의 연속된 0의 길이(max leading zeros)**를 기록,이를 여러 버킷(bucket)에 나눠서 평균/보정하면 전체 고유 수를 추정할 수 있음.🔍 왜 효과적인가?해시값은 고유하게 퍼지기 때문에, 많은 고유 값이 들어오면 더 긴 연속된 0이 나타날 확률이 높아짐.이걸 통계적으로 계산하면 거의 선형적 정확도를 얻을 수 있음.📦 장점메모리 효율수십억 개 데이터를 추정하는 데 수 KB만 사용속도입력값 처리 시 해시 → 배열 업데이트만 하면 됨병렬 처리 용이HLL 스케치는 쉽게 merge 가능 → 분산 ..

Tools/ETC 2025.05.21

PyTorch, Hugging Face Trainer를 활용한 분산 환경 학습

LLM 모델 분산 학습의 구성요소1. PyTorch개요:PyTorch는 Facebook AI Research(FAIR)에서 개발한 오픈 소스 딥러닝 프레임워크로, 연구와 산업계에서 널리 사용됩니다.특징:동적 계산 그래프: 모델을 개발하고 디버깅할 때 유연성이 뛰어납니다.GPU 가속: 손쉽게 GPU를 활용하여 연산을 가속할 수 있습니다.커뮤니티와 생태계: 다양한 라이브러리와 도구들이 활발히 개발되고 있으며, 풍부한 문서와 튜토리얼이 제공됩니다.2. Hugging Face Trainer개요:Hugging Face의 Transformers 라이브러리에서 제공하는 고수준 학습 인터페이스로, 복잡한 학습 루프를 단순화시켜 줍니다.특징:자동화: 학습 루프, 평가, 로깅, 체크포인트 저장 등 반복되는 작업들을 자동으..

AI/LLM 2025.03.12

Docker 이미지, 캐시, 데몬, 빌드 프로세스

(1) Docker 이미지란?Docker 이미지는 컨테이너를 실행하는 데 필요한 모든 것을 포함한 불변(immutable)한 패키지입니다.이는 레이어(layer) 기반 파일 시스템으로 구성되어 있으며, 각 레이어는 아래와 같은 명령어에 의해 생성됩니다.FROM → 베이스 이미지 정의 (예: ubuntu:20.04)RUN → 명령어 실행 후 파일 시스템 변경 (예: apt-get install -y curl)COPY / ADD → 파일 복사CMD / ENTRYPOINT → 실행 명령어 지정각 명령어(RUN, COPY 등)는 새로운 레이어를 생성하며, 이러한 레이어는 Docker가 저장하고 관리합니다.(2) Docker 데몬(Docker Daemon)Docker 데몬(dockerd)은 컨테이너를 관리하는 백..

Tools/Docker 2025.03.10

NVIDIA의 GPU, CUDA, PyTorch, TensorRT

NVIDIA GPU와 CUDA의 관계CUDA(Compute Unified Device Architecture)는 NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼으로, GPU의 강력한 병렬 처리 능력을 활용하여 일반적인 계산 작업을 가속화합니다. 이는 그래픽 처리뿐만 아니라 과학 계산, 머신 러닝 등 다양한 분야에서 활용됩니다. ​ GPU 아키텍처별 지원하는 CUDA 버전:GPU 모델아키텍처지원 가능한 CUDA 최소 버전GPU 모델아키텍처지원 가능한 CUDA 최소 버전P40PascalCUDA 8.0 이상T4TuringCUDA 10.0 이상A100AmpereCUDA 11.0 이상H100HopperCUDA 12.0 이상주의: 최신 CUDA 버전은 이전 GPU 아키텍처와의 호환성을 유지하지만, 최신 GPU의 기능을 ..

AI/ETC 2025.03.10
반응형