Полное руководство: Apache Superset vs Metabase с Docker-развертыванием и настройкой

31 марта 2025

Запустите 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

  1. Откройте http://localhost:8088
  2. Sources → Databases → + Database
  3. SQLAlchemy URI: postgresql://superset:superset_pass@postgres:5432/superset
  4. 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

  1. Создайте 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
  2. Сохраните как Dataset
  3. Создайте визуализацию: Line Chart
  4. Настройки:
    • Time Column: month
    • Metrics: SUM(total_sales)

Пример 2: Когортный анализ в Metabase

  1. New Question → Native Query
  2. Введите 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
  3. Визуализация: 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

  1. Используйте отдельный сервер для БД
  2. Настройте HTTPS через Nginx
  3. Регулярно обновляйте версии Docker-образов
  4. Включите мониторинг ресурсов
  5. Используйте снэпшоты для резервного копирования

Специальное предложение! Активируйте промокод 1524-DDFE-97B0-04A1 при заказе сервера и получите:

  • Бесплатный тест на 3 дня
  • DDoS-защиту уровня Enterprise
  • Круглосуточную техподдержку

Заключение

Оба инструмента позволяют построить полноценную BI-инфраструктуру. Для сложной аналитики выбирайте Apache Superset, для быстрого старта — Metabase. Развертывайте решения на облачных серверах Reg.ru для максимальной производительности.

Написать комментарий