💡 핵심 인사이트 메타데이터 카탈로그(Metadata Catalog)는 "데이터 레이크나 데이터 웨어하우스에 저장된 데이터의 위치, 구조, 형식, 소유자, 更新时间 등 데이터 자산의 정보를 중앙에서 수집, 저장, 관리하는" 시스템입니다. 스키마 온 리드(Schema-on-Read) 환경에서는 데이터가 원본 그대로 저장되므로, **어떤 데이터가 존재하는지, 어떤 스키마를 가지는지, 어디에 저장되어 있는지**를 파악하기 위해 메타데이터 카탈로그가 필수적입니다. AWS Glue, Apache Hive Metastore, DataHub, Amundsen 등의 도구가 이 역할을 수행합니다.
Ⅰ. 메타데이터 카탈로그의 필요성: 데이터 발견의 문제
데이터 레이크에 데이터가 쌓이면, 가장 큰 문제는 "내가 필요한 데이터가 어디에 있는지 어떻게 알 수 있는가?" 입니다.
[메타데이터 카탈로그 없는 경우: 데이터 발견의 어려움]
/Raw/에 10,000개의 파일이 있다고 가정:
/Raw/2024/01/data_001.csv
/Raw/2024/01/data_002.parquet
/Raw/2024/02/extract_final_v3.xlsx
/Raw/legacy/migration_backup_2023.gz
...
문제를 느낌표:
- 이 파일들이 무엇을 의미하는가?
- 각 파일의 스키마(컬럼, 데이터 타입)는 무엇인가?
- 가장 최신 버전은 어느 것인가?
- 누가 소유하며, 얼마나 자주 갱신되는가?
- 다른 데이터와의 관계(조인 가능성)는?
→ "_데이터는 있지만, 활용이 불가능한_" 상황 발생
→ "데이터 늪(Data Swamp)"으로의 길
메타데이터 카탈로그는 이 문제를 해결합니다. 데이터 카탈로그에 모든 데이터 자산의 정보가 인덱싱되어, 분석가가 "product 관련 데이터가 있나?_", "2024년 고객 데이터의 스키마는?", "이 테이블과 조인 가능한 다른 테이블은? 등의 질문에 답변을 얻을 수 있습니다.
Ⅱ. 메타데이터 카탈로그의 핵심 기능과 구성 요소
[메타데이터 카탈로그의 주요 기능]
┌─────────────────────────────────────────────────────────────────┐
│ 메타데이터 카탈로그 기능 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 데이터 자산 등록 (Data Discovery) │
│ - 테이블, 파일, 컬럼 정보 등록 │
│ - 스키마 정보 (컬럼명, 데이터 타입, 설명) │
│ - 데이터 위치 (S3 경로, DB 테이블명) │
│ - 파티션 정보 (시간 기반 등) │
│ │
│ 2. 데이터 계보 추적 (Data Lineage) │
│ - 데이터의 기원 (어떤 소스에서 왔는가) │
│ - 데이터의 변환 이력 (어떤 ETL을 거쳤는가) │
│ - 데이터의 파생 관계 (어떤 테이블에서 생성되었는가) │
│ │
│ 3. 검색 및 탐색 (Search & Browse) │
│ - 키워드 기반 검색 │
│ - 필터링 (소유자,数据类型, 태그 등) │
│ - 미리보기 및 프로파일링 │
│ │
│ 4. 접근 제어 및 거버넌스 (Governance) │
│ - 데이터 소유자/관리자 정의 │
│ - 민감 정보 태깅 (PII, 민감 등) │
│ - 접근 권한 관리 │
│ │
│ 5. 스키마 진화 관리 (Schema Evolution) │
│ - 컬럼 추가/삭제/변경 이력 │
│ - 호환성 경고 │
│ │
└─────────────────────────────────────────────────────────────────┘
핵심 메타데이터 유형:
1. 기술적 메타데이터 (Technical Metadata)
- 테이블/파일 이름, 경로
- 컬럼 이름과 데이터 타입
- 파티션 스키마
- 파일 형식 (Parquet, JSON, CSV 등)
- 행 수, 크기, 생성 시간
2. 업무적 메타데이터 (Business Metadata)
- 테이블/컬럼의 설명
- 비즈니스 정의
- 사용 권고 및 주의사항
- 데이터 소유자, 관리자
3. 운영 메타데이터 (Operational Metadata)
- 마지막更新时间
- 갱신 주기
- ETL/JOB 수행 이력
- 오류 이력
Ⅲ. 주요 메타데이터 카탈로그 도구
1. Apache Hive Metastore
Hadoop 환경에서 가장 널리 사용되는 메타데이터 카탈로그입니다.
[Hive Metastore 아키텍처]
┌─────────────────────────────────────────────────────────────────┐
│ Hive Metastore 계층 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ HiveServer2 │ │ EMR/Glue 등 │ │
│ │ (SQL Interface)│ │ ETL Jobs │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └──────────┬─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Hive Metastore │ │
│ │ (메타데이터 DB) │ │
│ │ │ │
│ │ - 테이블 정의 │ │
│ │ - 파티션 정보 │ │
│ │ - SD (Storage │ │
│ │ Descriptor) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ RDBMS (MySQL, │ │
│ │ PostgreSQL, │ │
│ │ Derby) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Hive, Spark, Presto 등 여러 엔진에서 공통으로 메타데이터 접근
- Thrift RPC API를 통해 메타데이터 조회/수정
- metastore_db(RDBMS)에 메타데이터를 집중 저장
2. AWS Glue Data Catalog
AWS 클라우드 환경용 완전 관리형 메타데이터 카탈로그입니다.
[AWS Glue Data Catalog]
┌─────────────────────────────────────────────────────────────────┐
│ AWS Glue Data Catalog │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AWS Glue는 다음을 자동화: │
│ │
│ 1. 크롤러 (Crawler) │
│ - S3, JDBC 등 데이터 소스를 스캔 │
│ - 자동으로 스키마 추출 및 카탈로그 업데이트 │
│ - 예약 실행 지원 │
│ │
│ 2. Data Catalog │
│ - 테이블, 파티션, 컬럼 정보 중앙 저장 │
│ - Athena, Redshift Spectrum, EMR에서 공용 접근 │
│ │
│ 3. 스키마 버전 관리 │
│ - 스키마 변경 이력 추적 │
│ - 호환성 검사 │
│ │
│ 4. 테이블 속성 │
│ - 설명, 소유자, LastAccessTime │
│ - 커스텀 속성 (태그, 분류) │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 예: Athena SQL에서 Glue 테이블 조회 │ │
│ │ SELECT * FROM glue_catalog.db_name.table_name │ │
│ │ → Glue가 S3의 Parquet 파일을 읽어 옴 │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
3. DataHub & Amundsen
오픈소스 기반의 최신 메타데이터 플랫폼입니다.
- DataHub (LinkedIn): Python/Java 기반, GraphQL API, 실시간 메타데이터
- Amundsen (Lyft): Python 기반, 메타데이터 + 데이터 계보 + 검색에 特化
Ⅳ. 메타데이터 카탈로그의 활용 사례
1. 데이터 발견 (Data Discovery)
[분석가 시나리오]
분석가: "고객 구매 이력 데이터로 RFM 분석을 하고 싶은데..."
카탈로그 검색:
- 키워드: "customer", "purchase", "order"
- 결과:
1. dw.customer_orders (고객 주문 테이블)
- 스키마: order_id, customer_id, order_date, amount, status
- 설명: 2020년부터 현재까지의 모든 고객 주문 내역
- 파티션: order_date (일별)
2. crm.customer_master (고객 마스터)
- 스키마: customer_id, name, email, segment, join_date
- 설명: CRM 시스템의 고객 마스터 테이블
3. dw.order_items (주문 상세)
- 스키마: order_item_id, order_id, product_id, qty, price
→ 분석가가 이 테이블들을 발견하여 RFM 분석 파이프라인 구축
2. 데이터 계보 (Data Lineage)
[데이터 계보 추적]
dw.monthly_sales_summary
↑
│ ( aggregation job: monthly_sales_agg.py )
│
dw.daily_sales
↑
│ ( ELT job: etl_daily_sales.py )
│
Raw.Sources.crm_export
Raw.Sources.pos_transactions
→ "_월간 매출 요약표의 숫자가 잘못되었을 때_,
_어떤 원본 데이터에서 문제가 시작되었는지_
_계보 분석으로 추적 가능"_"
Ⅴ. 메타데이터 카탈로그의 실제 적용과 📢 비유
성공적 적용을 위한 Best Practice:
- 自动화 (Crawler/Detector): 새 데이터가 추가될 때마다 수동 등록 대신 자동 크롤링으로 카탈로그를 최신 상태로 유지
- 규칙적 프로파일링: 데이터의 분포, 널 비율 등 통계 프로파일을 주기적으로 생성하여 데이터 품질 이상 징후를 조기에 발견
- 태깅과 분류: "PII, 내부용, 실험적" 등 태그 체계를 수립하여 데이터 접근 제어와 관리에 활용
- 계보 자동 추적: ETL/ELT 파이프라인에 계보 추적 코드를 삽입하여 데이터 흐름을 자동으로 기록
📢 섹션 요약 비유: 메타데이터 카탈로그는 **"도서관의 종합目録 시스템에 비유"**할 수 있습니다. 수백만 권의 책이 있는大型 도서관에서目録이 없으면 (어떤 책이 있는지, 어디에 있는지, 무슨 내용인지) 알 방법이 없습니다. 메타데이터 카탈로그는 이 도서관의 (책 제목, 저자, 위치, 주제, 대출 이력) 등을すべて記録한 종합目録입니다. 또한 "이 책은 저 책의 참고문헌이다(데이터 계보)", "이 책은 최근 인기 도서다(메타데이터 분석)" 같은附加 정보도 제공합니다. 이를 통해 독자(데이터 분석가)은 어디서 시작할지, 어떤 데이터를 신뢰할지, 어떤 데이터를 활용할지 판단할 수 있게 됩니다.