1. Databricks란?
Databricks는 Lakehouse 플랫폼을 구현한 통합 데이터 분석 서비스로, 데이터 엔지니어링, 데이터 사이언스, 머신러닝, 실시간 분석을 하나의 플랫폼에서 제공합니다. Apache Spark 창시자들이 설립했으며, 클라우드 네이티브 환경에서 대규모 데이터 처리와 AI 워크로드를 실행합니다.
📊 Lakehouse 아키텍처
데이터 레이크의 유연성과 데이터 웨어하우스의 성능/거버넌스를 결합한 새로운 패러다임. Delta Lake를 기반으로 ACID 트랜잭션, 스키마 검증, Time Travel을 지원합니다.
⚡ 통합 워크스페이스
Notebook, 작업 스케줄러, 실시간 대시보드, ML 모델 레지스트리, 협업 도구가 통합된 환경으로 컨텍스트 전환 없이 End-to-End 파이프라인 구축이 가능합니다.
🤖 Unity Catalog
중앙화된 데이터 거버넌스 시스템. 데이터, 모델, 파일에 대한 통합 권한 관리, 계보 추적, 데이터 품질 모니터링을 제공합니다.
2. 왜 써야 하는가?
기존 분산 시스템의 복잡성과 운영 부담을 해결하고, 데이터와 AI 팀의 협업 효율성을 극대화합니다.
| 대안 | 주요 단점 | Databricks의 차별점 |
|---|---|---|
| 온프레미스 Spark 클러스터 | 설치/유지보수 복잡, 스케일링 어려움, 버전 관리 부담 | 완전 관리형 서비스, 자동 스케일링, 최신 버전 자동 업데이트 |
| 전통적 ETL + 데이터 웨어하우스 | 비정형 데이터 처리 어려움, 실시간 분석 제한, 높은 비용 | Lakehouse로 모든 데이터 유형 지원, 배치/스트리밍 통합, 비용 효율적 스토리지 |
| 분리된 ML 플랫폼 | 데이터 이동 비용高, 모델 운영 복잡, 협업 어려움 | 통합 MLflow 기반 MLOps, Feature Store, 협업 환경 |
3. 핵심 개념
Databricks 플랫폼의 구성 요소와 데이터 흐름을 이해합니다.
┌─────────────────────────────────────────────────────────────────┐
│ Databricks Workspace │
├─────────────┬──────────────┬──────────────┬───────────────┤
│ Notebooks │ Dashboards │ Jobs │ MLflow │
│ (코드) │ (시각화) │ (작업) │ (실험/모델) │
└─────────────┴──────────────┴──────────────┴───────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Compute (계산 엔진) │
├─────────────┬──────────────┬──────────────┬───────────────┤
│ Spark │ Photon │ SQL │ Serverless │
│ (표준) │ (벡터화) │ (웨어하우스)│ (자동 관리) │
└─────────────┴──────────────┴──────────────┴───────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Storage Layer (스토리지) │
├─────────────────────────────────────────────────────────────────┤
│ Cloud Object Storage (S3, ADLS, GCS) │
│ + Delta Lake (Transaction Log, Time Travel) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Governance & Security (거버넌스) │
├─────────────┬──────────────┬──────────────┬───────────────┤
│ Unity │ Access │ Lineage │ Data │
│ Catalog │ Control │ (계보) │ Quality │
└─────────────┴──────────────┴──────────────┴───────────────┘
💡 핵심 포인트: Databricks는 계산(Compute)과 스토리지(Storage)를 분리한 아키텍처로, 스토리지 비용을 최소화하면서 탄력적인 계산 리소스 관리가 가능합니다.
4. 퀵스타트
4.1. Databricks CLI 설치 및 설정
# Databricks CLI 설치 (Python 기반)
pip install databricks-cli
# 구성 프로필 설정 (인증 토큰 필요)
databricks configure --token --profile myprofile
# 호스트: https://<workspace-instance>.cloud.databricks.com
# 토큰: User Settings → Access Tokens 에서 생성
4.2. 첫 번째 Notebook 예제 (Python)
# Databricks Notebook에서 실행
# 1. 데이터 읽기 (Delta Lake)
df = spark.read.format("delta").load("/databricks-datasets/nyctaxi/")
display(df.limit(10))
# 2. 데이터 변환
from pyspark.sql.functions import col, hour
df_with_hour = df.withColumn("pickup_hour", hour(col("tpep_pickup_datetime")))
df_grouped = df_with_hour.groupBy("pickup_hour").count().orderBy("pickup_hour")
# 3. 결과 시각화
display(df_grouped)
# 4. Delta Table로 저장
df.write.format("delta").mode("overwrite").save("/mnt/data/nyctaxi_delta")
# 5. SQL로 쿼리
df.createOrReplaceTempView("nyctaxi_temp")
spark.sql("SELECT vendor_id, avg(total_amount) FROM nyctaxi_temp GROUP BY vendor_id").show()
4.3. 작업(Job) 생성 (CLI)
# job 정의 JSON 파일 생성 (job_config.json)
{
"name": "Daily ETL Job",
"existing_cluster_id": "<cluster-id>",
"notebook_task": {
"notebook_path": "/Users/you@company.com/etl_pipeline"
},
"schedule": {
"quartz_cron_expression": "0 0 9 * * ?",
"timezone_id": "America/Los_Angeles"
}
}
# CLI로 작업 생성
databricks jobs create --json-file job_config.json --profile myprofile
5. 핵심 설정 레퍼런스
| 카테고리 | 설정 키/위치 | 권장값/설명 |
|---|---|---|
| 클러스터 성능 | spark.databricks.io.cache.enabled | true (Photon 가속 사용 시) |
| Delta Lake | spark.sql. |