Спасибо @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 мы будем ставить 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)
Нам важно active (running)

Загружаем Docker Compose plugin:

sudo apt-get update
sudo apt-get install docker-compose-plugin

Применяем разрешения для исполняемого файла к двоичному файлу:

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
Версию выбираем на своё усмотрение. Проверить статус можно командой 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

Комментарии (3)


  1. Naves
    11.11.2023 15:28
    +2

    1) docker compose теперь ставится как плагин к докеру из репы. Вы его качаете отдельно зачем-то. Для совместимости скриптов можно симлинк сделать.

    /usr/local/bin/docker-compose -> /usr/libexec/docker/cli-plugins/docker-compose

    Причем самое интересное, проверяете вы одной командой, а используете потом другую, и это будут разные версии compose

    2) Не очень хорошая идея править файл docker-compose-non-dev.yml, который потом можно будет обновить из git без ошибок и конфликтов из-за локальных изменений.

    Лучше создавать отдельный файл .env, в котором уже и прописать нужную версию, например, TAG=2.1.1


    1. kracko23 Автор
      11.11.2023 15:28

      Привет, принято и спасибо, что подсветил.

      1) Да, давно не проверял. Материал готовил давно и затянул с выдачей в свет.

      2) Да, это лучшая практика, но статья рассчитана, чтобы была доступна прям совсем новичкам и создавать свой .env может быть для них сложновато.


  1. ivolake
    11.11.2023 15:28
    +2

    Рад был стараться)