DataHub에 대한 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

data-catalog metadata governance

1. DataHub란?

DataHub는 LinkedIn에서 개발한 오픈소스 메타데이터 플랫폼으로, 현대 데이터 스택의 핵심인 데이터 발견(discovery), 거버넌스(governance), 라인티지(lineage)를 통합적으로 지원합니다. 데이터 엔지니어와 데이터 사이언티스트가 데이터 자산을 효율적으로 관리하고, AI/ML 워크플로우에서 메타데이터를 활용할 수 있도록 설계되었습니다.

주요 특징으로는 Python 기반의 강력한 인제스션 프레임워크, GraphQL API, React 기반 UI가 있으며, 대규모 엔터프라이즈 환경에서 검증되었습니다. Kubernetes, Docker로 쉽게 배포 가능합니다.

3대 핵심 능력

📊 Unified Metadata Platform

다양한 소스(Apache Atlas, Amundsen, DBT 등)에서 메타데이터를 중앙화. Dataset, User, Pipeline 등 엔티티를 그래프 모델로 관리하여 관계성을 직관적으로 탐색.

🔍 Search & Discovery

Elasticsearch 통합으로 풀텍스트 검색, 태그, 용도(usage) 기반 추천. AI/ML 모델의 데이터 소스 추적에 최적화.

🛡️ Governance & Lineage

데이터 라인티지 시각화, 정책 기반 거버넌스, 감사 로그. PII/민감 데이터 태깅으로 컴플라이언스 지원.

DataHub는 2020년 오픈소스화 이후 Acryl Data가 유지보수 중이며, 2024년 기준 10K+ GitHub 스타를 기록. 데이터 메쉬 아키텍처에 필수 도구.

2. 왜 써야 하는가?

기존 데이터 카탈로그 도구(Amundsen, Atlas 등)는 부분적 기능만 제공하지만, DataHub는 통합 플랫폼으로 비용과 운영 복잡도를 줄입니다. 특히 Python 생태계와의 호환성이 뛰어나 데이터 엔지니어의 생산성을 극대화합니다.

기능 DataHub Amundsen Atlas Collibra
오픈소스 ✅ (완전) ✅ ✅ (Hadoop 중심) ❌ (상용)
라인티지 ✅ (시각화+API) ❌ ✅ (부분) ✅ (고가)
인제스션 ✅ (100+ 커넥터) ✅ (제한) ✅ (Hadoop) ✅ (커스텀)
스케일 ✅ (Kubernetes) ⚠️ ✅ ✅ (클라우드)
Python SDK ✅ (공식) ❌ ❌ ❌

ROI: DataHub 도입 시 데이터 검색 시간 70% 단축 (LinkedIn 사례). AI 엔지니어는 모델 입력 데이터의 출처를 즉시 확인 가능.

3. 핵심 개념

DataHub의 세계관은 Entity-Aspects-Relationships로 구성됩니다. Entity(예: Dataset)는 Aspects(속성: schema, tags 등)로 확장되며, Relationships로 연결됩니다.

주요 엔티티

아키텍처 개요

+----------------+ +-------------------+ +-----------------+ | Clients | | Ingestion | | Kafka Topics | | - UI (React) |<--->| - Python CLI/SDK |<--->| - Metadata V2 | | - GraphQL API | | - 100+ Sources | | - Audit Events | +----------------+ +-------------------+ +-----------------+ | | v v +-------------------+ +-----------------+ | GMS (Java) |<--->| Metadata Store | | - Metadata Service | | - MySQL (Graph) | | - Metadata Models | | - Elasticsearch | +-------------------+ | (Search) | ^ +-----------------+ | | +-------------------+ | | Action Service |<----------------+ | - Notifications | +-------------------+

인제스션 → Kafka → GMS → 스토어. UI는 GMS의 GraphQL 엔드포인트 호출.

4. 퀵스타트

로컬에서 5분 만에 시작. Docker Compose 사용.

1. 설치

git clone https://github.com/datahub-project/datahub
cd datahub
docker compose up -d

2. DataHub CLI 설치

pip install 'acryl-datahub[datahub-rest]'

3. 첫 인제스션 (PostgreSQL 예제)

config.yaml 작성:

source:
  type: postgres
  config:
    host_port: localhost:5432
    database: postgres
    username: postgres
    password: datahub
sink:
  type: datahub-rest
  config:
    server: http://localhost:8080
datahub ingest -c config.yaml

4. Python SDK 예제 (라인티지 추가)

from datahub.emitter.mcp import MetadataChangeProposalWrapper
from datahub.metadata.schema_classes import (
    DatasetLineageClass,
    UpstreamLineageClass,
)

# 예제: Dataset A -> B 라인티지
lineage = DatasetLineageClass(
    upstreams=[UpstreamLineageClass(
        dataset="urn:li:dataset:(urn:li:dataPlatform:postgres,test_db.tableA,PROD)"
    )]
)
mcp = MetadataChangeProposalWrapper(entityUrn="urn:li:dataset:(urn:li:dataPlatform:postgres,test_db.tableB,PROD)", aspect=lineage)
# GMS로 emit

UI 접속: http://localhost:9002. 로그인 없이 탐색 가능.

5. 핵심 설정 레퍼런스

docker-compose.yml 및 ingestion config 주요 옵션.

설정 키 설명 기본값 예제
metadata-store.host MySQL 호스트 localhost:19324 mysql.datahub.com:3306
elasticsearch.hosts 검색 인덱스 http://localhost:9200 https://es-cluster:9200
ingestion.batch.size 배치 크기 1000 5000
playbook.config.retentionDays 사용량 보존 30 90
security.enableRbac RBAC 활성 false true

6. 실무 팁 & 트러블슈팅

팁

자주 발생 문제: Elasticsearch 연결 실패
해결: docker logs datahub-elasticsearch 확인 후, network_mode: host 설정. 메모리 부족 시 -Xmx 조정.

Ingest 실패 (401 Unauthorized)
CLI 버전 mismatch: pip install --upgrade acryl-datahub. Server URL에 /api 확인.

성능 최적화: GMS 클러스터링, Kafka 파티션 증가. 대규모(1M+ 엔티티) 시 MySQL 샤딩.

7. 참고 자료