Полное руководство: Apache Superset vs Metabase с Docker-развертыванием и настройкой
Запустите BI-систему за 15 минут! Используйте промокод 1524-DDFE-97B0-04A1 для скидки на облачные серверы Reg.ru.
Часть 1: Установка через Docker Compose
Apache Superset с PostgreSQL
docker-compose-superset.yml
:
version: '3.7'
services:
postgres:
image: postgres:14
environment:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset_pass
POSTGRES_DB: superset
volumes:
- postgres_data:/var/lib/postgresql/data
superset:
image: apache/superset:2.1.0
ports:
- "8088:8088"
depends_on:
- postgres
environment:
SUPERSET_SECRET_KEY: 'your-secret-key-123'
SUPERSET_DB_HOST: postgres
SUPERSET_DB_USER: superset
SUPERSET_DB_PASSWORD: superset_pass
SUPERSET_DB_NAME: superset
command: ["/app/docker/docker-init.sh"]
volumes:
postgres_data:
Запуск:
docker-compose -f docker-compose-superset.yml up -d
docker exec -it superset superset-init
Metabase с MySQL
docker-compose-metabase.yml
:
version: '3.7'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root_pass
MYSQL_DATABASE: metabase
MYSQL_USER: metabase
MYSQL_PASSWORD: metabase_pass
metabase:
image: metabase/metabase:v0.46.4
ports:
- "3000:3000"
depends_on:
- mysql
environment:
MB_DB_TYPE: mysql
MB_DB_DBNAME: metabase
MB_DB_PORT: 3306
MB_DB_USER: metabase
MB_DB_PASS: metabase_pass
MB_DB_HOST: mysql
Запуск:
docker-compose -f docker-compose-metabase.yml up -d
Часть 2: Интеграция с источниками данных
Подключение PostgreSQL к Superset
- Откройте http://localhost:8088
- Sources → Databases → + Database
- SQLAlchemy URI:
postgresql://superset:superset_pass@postgres:5432/superset
- Test Connection → Save
Пример подключения ClickHouse к Metabase
docker run -d -p 3000:3000 \
-e MB_DB_TYPE=clickhouse \
-e MB_DB_HOST=your-clickhouse-host \
-e MB_DB_PORT=8123 \
-e MB_DB_DBNAME=default \
metabase/metabase
Часть 3: Создание дашбордов
Пример 1: Анализ продаж в Superset
- Создайте SQL Lab запрос:
SELECT date_trunc('month', order_date) AS month, SUM(amount) AS total_sales, COUNT(DISTINCT customer_id) AS unique_customers FROM orders GROUP BY 1
- Сохраните как Dataset
- Создайте визуализацию: Line Chart
- Настройки:
- Time Column: month
- Metrics: SUM(total_sales)
Пример 2: Когортный анализ в Metabase
- New Question → Native Query
- Введите SQL:
WITH cohorts AS ( SELECT user_id, DATE_TRUNC('month', MIN(created_at)) AS cohort_month FROM users GROUP BY 1 ) SELECT cohort_month, COUNT(DISTINCT u.user_id) AS total_users, COUNT(DISTINCT CASE WHEN DATE_TRUNC('month', o.created_at) = cohort_month THEN u.user_id END) AS month_0, COUNT(DISTINCT CASE WHEN DATE_TRUNC('month', o.created_at) = cohort_month + INTERVAL '1 month' THEN u.user_id END) AS month_1 FROM cohorts c JOIN orders o ON c.user_id = o.user_id GROUP BY 1
- Визуализация: Cohort Analysis
Часть 4: Продвинутые настройки
Настройка аутентификации
Superset (config.py):
from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
'name': 'google',
'token_key': 'access_token',
'icon': 'fa-google',
'remote_app': {
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_SECRET',
'api_base_url': 'https://www.googleapis.com/oauth2/v2/',
'client_kwargs': {'scope': 'email profile'},
'request_token_url': None,
'access_token_url': 'https://accounts.google.com/o/oauth2/token',
'authorize_url': 'https://accounts.google.com/o/oauth2/auth'
}
}
]
Настройка кэширования в Metabase
# docker-compose метаданные
environment:
MB_DB_CACHE_TTL: 1200 # 20 минут
MB_QUERY_CACHING_TTL_MIN: 60
MB_QUERY_CACHING_MAX_KB: 10000
Часть 5: Оптимизация производительности
- Для Superset:
docker run -d \ -e SUPERSET_WORKERS=4 \ -e SUPERSET_CELERY_WORKERS=2 \ -p 8088:8088 \ apache/superset
- Для Metabase:
docker run -d \ -e JAVA_TOOL_OPTIONS="-Xmx4G -Xms2G" \ -p 3000:3000 \ metabase/metabase
Производительность требует ресурсов! Для enterprise-решений используйте Turbo VPS с NVMe-дисками.
Часть 6: Мониторинг и бэкапы
Мониторинг через Prometheus
Добавьте в docker-compose-superset.yml
:
superset:
environment:
SUPERSET_FEATURE_FLAGS:
'ENABLE_PROMETHEUS_EXPORTER': True
PROMETHEUS_EXPORTER_PORT: 8089
Бэкап метаданных Metabase
docker exec -it metabase pg_dump -U metabase -d metabase > metabase_backup.sql
Часть 7: Рекомендации для Production
- Используйте отдельный сервер для БД
- Настройте HTTPS через Nginx
- Регулярно обновляйте версии Docker-образов
- Включите мониторинг ресурсов
- Используйте снэпшоты для резервного копирования
Специальное предложение! Активируйте промокод 1524-DDFE-97B0-04A1 при заказе сервера и получите:
- Бесплатный тест на 3 дня
- DDoS-защиту уровня Enterprise
- Круглосуточную техподдержку
Заключение
Оба инструмента позволяют построить полноценную BI-инфраструктуру. Для сложной аналитики выбирайте Apache Superset, для быстрого старта — Metabase. Развертывайте решения на облачных серверах Reg.ru для максимальной производительности.