Архитектура и сайзинг Apache Superset
Apache Superset — это современная платформа для визуализации данных и бизнес-аналитики с открытым исходным кодом. Она предназначена для исследования и визуализации данных различных источников, включая традиционные реляционные базы данных и новые SQL- или NoSQL-системы. Superset поддерживает обработку запросов только в режиме “Live”, что позволяет быстро обрабатывать запросы в БД. Обработкой и подготовкой данных занимается хранилище, Superset только отправляет SQL запрос к нему.
Архитектура Apache Superset
Архитектура Apache Superset разработана таким образом, чтобы обеспечить масштабируемость, гибкость и лёгкость интеграции с различными источниками данных. Для среды разработки и тестирования необходимо развернуть отдельный одноузловой сервер Apache Superset (Web-сервер + внутренняя база данных) и отдельный сервер Clickhouse для обработки запросов.
Кластер nginx – отвечают за балансировку входящих запросов на web-сервера;
Кластер Apache Superset - состоит из компонентов: веб-сервера на Flask и Celery. Первый отвечает за визуализацию, второй за отправку асинхронных запросов к СУБД DataMart;
Кластер Redis (High Availability) – выполняет ряд функций, в частности отвечает за хранение очередей Celery и за различный кеш Superset-а;
DataMart DB (Clickhouse) – база данных, содержащая конечные витрины данных для построения аналитических дашбордов;
System Database (PostgreSQL) – внутренняя база Apache Superset для хранения метаданных, настроек и прочей системной информации;
Active Directory – каталог пользователей, интеграция через LDAP.
Развертывание и масштабирование системы производится через использование технологий контейнеризации. Для обеспечения высокой производительность требуется разворачивать, настраивать и поддерживать дополнительные компоненты: Celery, Redis и их аналоги, которые будут отвечать за обеспечение большого количества одновременных запросов и кэширования данных. Также требуется проводить оптимизацию в исходной СУБД Clickhouse настраивая её так, чтобы целевые запросы максимально быстро отрабатывали.
Контейнерное развертывание
Развертывание Apache Superset через контейнеры позволяет быстро масштабировать и поддерживать архитектуру уже настроенной систему в дальнейшем.
Развертывание Apache Superset в контейнере Docker:
- Установка Docker
Перед тем как начать, убедитесь, что на вашем сервере установлен Docker. Если Docker еще не установлен, вы можете скачать и установить его с официального сайта Docker для вашей операционной системы.
- Скачивание образа Apache Superset
Самый простой способ начать работу с Superset — использовать официальный образ Docker, доступный на Docker Hub. Вы можете скачать образ, используя следующую команду:
docker pull apache/superset
- Запуск контейнера Superset
После того как образ будет скачан, вы можете запустить контейнер следующей командой:
docker run -d -p 8088:8088 --name superset apache/superset
Эта команда запустит контейнер в фоновом режиме, пробросит порт 8088 для доступа к веб-интерфейсу Superset и назначит контейнеру имя superset.
- Инициализация базы данных Superset
Перед первым использованием Superset необходимо инициализировать базу данных. Выполните следующие команды:
# Инициализация базы данных docker exec -it superset superset db upgrade # Загрузка примеров (необязательно) docker exec -it superset superset load_examples # Создание администратора docker exec -it superset superset fab create-admin # Инициализация ролей и прав docker exec -it superset superset init
- Доступ к веб-интерфейсу Superset
После завершения всех настроек вы можете открыть веб-браузер и перейти по адресу http://localhost:8088 для доступа к Apache Superset. Войдите, используя учетные данные администратора, которые вы создали на предыдущем шаге.
- Настройка и оптимизация
Для оптимизации работы Apache Superset в контейнере можно настроить параметры, такие как подключение к внешней базе данных или изменение конфигурационных файлов Superset, расположенных внутри контейнера. Это может потребовать создания пользовательского образа Docker с соответствующими настройками конфигурации.
- Масштабирование и обслуживание
Для масштабирования и обеспечения высокой доступности Superset в производственной среде рассмотрите возможность использования оркестрации контейнеров с помощью Kubernetes или Docker Swarm, которые позволяют управлять несколькими контейнерами, балансировать нагрузку и обеспечивать бесперебойную работу приложения.
Сайзинг
Сайзинг критичен для обеспечения производительности, масштабируемости и надежности Apache Superset.
Рекомендации по сайзингу
Для малых и средних проектов начальные рекомендации могут включать:
- CPU: 4 ядра
- Оперативная память: 16 ГБ
- Дисковое пространство: 50 ГБ (для установки и хранения временных файлов и баз данных)
- Сеть: Высокоскоростное подключение, особенно если данные хранятся в облачной среде
Для крупных предприятий или при интенсивном использовании:
- CPU: 8-16 ядер или более, в зависимости от нагрузки
- Оперативная память: 32 ГБ или более
- Дисковое пространство: 100 ГБ или более, с учетом быстродействия SSD для улучшения производительности I/O
- Сеть: Гигабитное подключение для поддержки быстрой передачи данных






