Поднимаем BI Apache Superset в 2023 году — гайд с последними обновлениями
Спасибо @ivolake за «Поднимаем Apache Superset — необходимый и достаточный гайд». Больше года назад для меня новичка он стал базой, но спустя год было выпущено несколько обновлений SS и процесс его развёртывания претерпел важные изменения.
Наша среда обитания Superset
Ubuntu 22.04
Docker 24.06 и Docker-compose 2.22.0
Postgres 14 и PgAdmin (ставиться отдельно)
Redis 7
Python 3.10 (есть в стандартной сборка Ubuntu 22.04)
Текстовый редактор Nano (есть в стандартной сборка Ubuntu 22.04)
Сам Superset мы будем ставить свежей версии 3.0.1 https://github.com/apache/superset
Список полезных ссылок
Установка docker и docker-compose на Ubuntu
Обновляем существующий список пакетов:
sudo apt update
Устанавливаем пакеты для apt:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Настраиваем путь репозитория Docker в источники apt:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Далее добавим ключ GPG для официального репозитория Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Обновляем ещё раз существующий список пакетов:
sudo apt update
Устанавливаем Docker:
sudo apt install docker-ce
Проверим статус Docker:
sudo systemctl status docker
Нам важно active (running)
Загружаем версию Docker Compose (2.22.0)
sudo curl -L "https://github.com/docker/compose/releases/tag/v2.22.0-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Команда на скачивание актуальна для версии v2.22.0
Применяем разрешения для исполняемого файла к двоичному файлу:
sudo chmod +x /usr/local/bin/docker-compose
Ну и на конец финальная проверка:
docker compose version
Как-то так
Установка Apache Superset
Клонируем проект из github:
git clone https://github.com/apache/superset.git
Переходим в директорию:
cd superset
Переключаемся на ветку нужного релиза (2.1.0 — версия постабильней (рекомендована), 3.0.1 — последняя версия)
git checkout 2.1.0
Версию выбираем на своё усмотрение. Проверить статус можно командой git status
Установка редактора Nano (опционально)
Nano есть в стандартной сборке, но если по каким-то причинам его нет, то установим:
sudo apt update
sudo apt upgrade
sudo apt install nano
nano --version
Отредактируем через nano файл docker-compose-non-dev.yml (можно пропустить, если нужна последняя версия 0.0.0 dev) :
x-superset-image: &superset-image apache/superset:${TAG:-latest-dev}
Меняем на:
x-superset-image: &superset-image apache/superset:2.1.0 (или 3.0.1)
Переходим в папку docker:
cd docker
Открываем важный файл настройки конфигураций superset_config.py
nano superset_config.py
Добавим / Заменим в него текст:
# Superset specific config
ROW_LIMIT = 25000
# Flask App Builder configuration
# Your App secret key will be used for securely signing the session cookie
# and encrypting sensitive information on the database
# Make sure you are changing this key for your deployment with a strong key.
# Alternatively you can set it with `SUPERSET_SECRET_KEY` environment variable.
# You MUST set this for production environments or the server will not refuse
# to start and you will see an error in the logs accordingly.
SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'
# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
Тут нам нужно настроить SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY' — это параметр безопасности, по новым требованиям для успешной установки требуется задать свой уникальный СЕКРЕТНЫЙ КОД.
Генерируем свой уникальный SECRET_KEY:
openssl rand -base64 42
Вставляем результат в параметр выше и будет что-то типа:
SECRET_KEY = 'QWDSAB8DhYr63dBsqfrLTxMzG+Z6FNF1uyrsjaSfFk9yXMqeZ8tlndKia'
Сохраняем наши правки (ctrl + S) и выходим из редактора
Выполняем команды:
sudo docker-compose -f docker-compose-non-dev.yml pull
sudo docker-compose -f docker-compose-non-dev.yml up
Если спустя пару минут установка ещё будет не окончена, то можно попробовать прервать установку …
Проверяем, что всё ок:
docker ps -a
Заходим в браузер и переходим по адресу нашего сервера на порт 8088 (, а может вы настроили другой, 8080 либо другой).
Ура, успех! На скрине нестандартная сборка
Стандартные логин и пароль (их можно задать в файле docker-init.sh перед запуском установки):
Пользователь: admin
Пароль: admin
Позже можно поменять в приложении.
Дальше, как быть с БД и СУБД
БД можно подключить на своё усмотрение через настройки на портале BI.
По умолчанию, мы установили БД Postgres на порт 5432, для использования её нужно подключить через настройки на портале BI.
Если нужна СУБД, то подойдёт PgAdmin, её Docker-файл можно найти на https://hub.docker.com/r/dpage/pgadmin4
Если нужен будет коннект к Mssql, то потребуется доп.драйвер и залезть в докер-файл SS:
Введём команду, чтобы увидеть список запущенных контейнеров:
docker ps
Найдём номер нужного нам контейнер superset_app и зайдём в этот контейнер:
sudo docker exec -it <номер_нашего_контейнера> bash
Там установим нужный драйвер и выйдем из контейнера (ctrl + z):
sudo apt update
sudo apt upgrade
pip install -U pip
pip install pymssql