Apache Superset은 Airbnb에서 개발하고 Apache Foundation에서 관리하는 엔터프라이즈급 데이터 탐색 및 시각화 플랫폼입니다. 40가지 이상의 차트 타입, SQL 에디터, 대시보드 기능을 제공하며 대용량 데이터셋도 빠르게 처리합니다. ClickHouse, Druid, Presto 등 빅데이터 엔진과의 통합이 뛰어나 대규모 분석에 적합합니다.
Apache Superset 주요 특징
Superset은 엔터프라이즈 환경에 적합한 풍부한 기능을 제공합니다.
데이터 시각화
- 40+ 차트 타입: 바, 라인, 파이, 히트맵, 지도, 선버스트 등
- SQL Lab: 강력한 SQL IDE 내장
- 시맨틱 레이어: 메트릭/차원 사전 정의
- 대시보드: 드래그 앤 드롭 레이아웃
- 필터: 크로스 필터링, 시간 범위 필터
엔터프라이즈 기능
- RBAC (역할 기반 접근 제어)
- SSO (OAuth, LDAP, OIDC)
- 행 수준 보안 (Row Level Security)
- 대시보드 임베딩
- 알림 & 리포트 (Slack, 이메일)
데이터베이스 지원
- ClickHouse, Druid, Presto, Trino
- PostgreSQL, MySQL, BigQuery, Snowflake
- Apache Spark, Hive, Impala
- 40+ 데이터베이스 드라이버
사전 요구 사항
- Docker 및 Docker Compose 설치
- 최소 4GB RAM (8GB 권장)
- 20GB 이상 저장 공간
- Git 설치
Docker Compose로 Superset 설치
방법 1: 공식 저장소 클론 (권장)
# 저장소 클론
git clone --depth=1 https://github.com/apache/superset.git
cd superset
# 최신 안정 버전 체크아웃
git checkout tags/4.0.0
# Docker Compose로 실행
docker compose -f docker-compose-image-tag.yml up -d
방법 2: 간단한 Docker Compose
# docker-compose.yml
services:
superset:
image: apache/superset:latest
container_name: superset
restart: unless-stopped
ports:
- "8088:8088"
environment:
- SUPERSET_SECRET_KEY=${SECRET_KEY}
- DATABASE_URL=postgresql://superset:${DB_PASSWORD}@superset-db:5432/superset
- REDIS_URL=redis://superset-redis:6379/0
volumes:
- superset-home:/app/superset_home
depends_on:
- superset-db
- superset-redis
command: >
bash -c "
superset db upgrade &&
superset fab create-admin --username admin --firstname Admin --lastname User --email admin@example.com --password admin &&
superset init &&
superset run -h 0.0.0.0 -p 8088
"
superset-db:
image: postgres:16-alpine
container_name: superset-db
restart: unless-stopped
environment:
- POSTGRES_DB=superset
- POSTGRES_USER=superset
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- superset-postgres:/var/lib/postgresql/data
superset-redis:
image: redis:alpine
container_name: superset-redis
restart: unless-stopped
volumes:
superset-home:
superset-postgres:
환경 변수 파일
# .env
# 필수: 강력한 시크릿 키 생성
SECRET_KEY=$(openssl rand -base64 42)
DB_PASSWORD=your_secure_password
시크릿 키 생성:
openssl rand -base64 42
설치 및 실행
# 디렉토리 생성
mkdir superset && cd superset
# docker-compose.yml 및 .env 생성
# 컨테이너 실행 (첫 실행 시 5-10분 소요)
docker compose up -d
# 로그 확인
docker compose logs -f superset
# 브라우저에서 접속
# http://localhost:8088
# 기본 로그인: admin / admin
초기 설정
1. 관리자 계정 변경
http://localhost:8088접속admin/admin으로 로그인- Settings → List Users → admin 편집
- 비밀번호 변경
2. 데이터베이스 연결
- Settings → Database Connections → + Database
- 데이터베이스 타입 선택 (PostgreSQL 등)
- 연결 정보 입력:
Host: your-db-hostPort: 5432Database: your_databaseUsername: readonly_userPassword: **** - Test Connection → Connect
3. 샘플 데이터 로드 (선택)
docker compose exec superset superset load_examples
프로덕션 설정
전체 스택 (Worker 포함)
# docker-compose.prod.yml
services:
superset:
image: apache/superset:4.0.0
container_name: superset
restart: always
expose:
- "8088"
environment:
- SUPERSET_SECRET_KEY=${SECRET_KEY}
- DATABASE_URL=postgresql://superset:${DB_PASSWORD}@superset-db:5432/superset
- REDIS_URL=redis://superset-redis:6379/0
volumes:
- ./superset_config.py:/app/pythonpath/superset_config.py
depends_on:
- superset-db
- superset-redis
labels:
- "traefik.enable=true"
- "traefik.http.routers.superset.rule=Host(`superset.yourdomain.com`)"
- "traefik.http.routers.superset.entrypoints=websecure"
- "traefik.http.routers.superset.tls.certresolver=letsencrypt"
networks:
- superset-net
- traefik-public
superset-worker:
image: apache/superset:4.0.0
container_name: superset-worker
restart: always
environment:
- SUPERSET_SECRET_KEY=${SECRET_KEY}
- DATABASE_URL=postgresql://superset:${DB_PASSWORD}@superset-db:5432/superset
- REDIS_URL=redis://superset-redis:6379/0
command: celery --app=superset.tasks.celery_app:app worker --pool=prefork -O fair -c 4
depends_on:
- superset
networks:
- superset-net
superset-beat:
image: apache/superset:4.0.0
container_name: superset-beat
restart: always
environment:
- SUPERSET_SECRET_KEY=${SECRET_KEY}
- DATABASE_URL=postgresql://superset:${DB_PASSWORD}@superset-db:5432/superset
- REDIS_URL=redis://superset-redis:6379/0
command: celery --app=superset.tasks.celery_app:app beat --pidfile /tmp/celerybeat.pid
depends_on:
- superset
networks:
- superset-net
superset-db:
image: postgres:16-alpine
container_name: superset-db
restart: always
environment:
- POSTGRES_DB=superset
- POSTGRES_USER=superset
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- superset-postgres:/var/lib/postgresql/data
networks:
- superset-net
superset-redis:
image: redis:alpine
container_name: superset-redis
restart: always
networks:
- superset-net
volumes:
superset-postgres:
networks:
superset-net:
driver: bridge
traefik-public:
external: true
superset_config.py
# superset_config.py
import os
SECRET_KEY = os.environ.get('SUPERSET_SECRET_KEY')
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
# Redis 캐시
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': os.environ.get('REDIS_URL'),
}
# Celery 설정
class CeleryConfig:
broker_url = os.environ.get('REDIS_URL')
result_backend = os.environ.get('REDIS_URL')
CELERY_CONFIG = CeleryConfig
# 보안 설정
WTF_CSRF_ENABLED = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
# 기능 플래그
FEATURE_FLAGS = {
'ENABLE_TEMPLATE_PROCESSING': True,
'DASHBOARD_NATIVE_FILTERS': True,
'DASHBOARD_CROSS_FILTERS': True,
}
관리 명령어
# 로그 확인
docker compose logs -f superset
# 관리자 계정 생성
docker compose exec superset superset fab create-admin \
--username newadmin \
--firstname New \
--lastname Admin \
--email newadmin@example.com \
--password secure_password
# 데이터베이스 마이그레이션
docker compose exec superset superset db upgrade
# 권한 초기화
docker compose exec superset superset init
# 샘플 데이터 로드
docker compose exec superset superset load_examples
# 업데이트
docker compose pull
docker compose up -d
문제 해결
“SECRET_KEY must be set” 오류
# 시크릿 키 생성 후 .env에 추가
openssl rand -base64 42
메모리 부족
Superset은 메모리를 많이 사용합니다. 최소 4GB RAM 확보.
데이터베이스 드라이버 없음
커스텀 드라이버 설치가 필요한 경우 Dockerfile 확장:
FROM apache/superset:latest
RUN pip install clickhouse-connect
마무리
Apache Superset은 엔터프라이즈급 데이터 시각화가 필요한 조직에 적합합니다. SQL Lab으로 복잡한 쿼리를 작성하고, 40가지 이상의 차트 타입으로 데이터를 시각화할 수 있습니다. ClickHouse, Druid 등 빅데이터 엔진과의 통합이 뛰어나 대용량 데이터 분석에 최적화되어 있습니다.
참고 링크
- 공식 사이트: https://superset.apache.org
- GitHub: https://github.com/apache/superset
- Docker Hub: https://hub.docker.com/r/apache/superset
- 문서: https://superset.apache.org/docs