Найти в Дзене
Бахадир Алиев

Установка Superset с помощью Docker Compose

Оглавление

Самый быстрый способ опробовать Superset локально — использовать Docker и Docker Compose на компьютере с Linux или Mac OSX. Superset не имеет официальной поддержки для Windows, поэтому ниже мы предоставили обходной путь для виртуальной машины.

1. Установите Docker Engine и Docker Compose

Mac OS X

Установите Docker для Mac , который включает движок Docker и последнюю версию « docker composeиз коробки».

После установки Docker для Mac откройте панель настроек Docker, перейдите в раздел «Ресурсы» и увеличьте выделенную память до 6 ГБ. Поскольку по умолчанию выделено только 2 ГБ ОЗУ, Superset не запустится.

Линукс

Установите Docker в Linux , следуя инструкциям Docker для любого варианта Linux, который вам подходит. Поскольку docker composeон не устанавливается как часть базовой установки Docker в Linux, как только у вас будет работающий движок, следуйте инструкциям по установке Docker Compose для Linux.

Windows

К сожалению, Superset официально не поддерживается в Windows. Один из вариантов локального опробовать Superset для пользователей Windows — это установить виртуальную машину Ubuntu Desktop через VirtualBox и продолжить выполнение инструкций Docker для Linux внутри этой виртуальной машины. Мы рекомендуем выделить виртуальной машине не менее 8 ГБ ОЗУ, а также выделить жесткий диск объемом не менее 40 ГБ, чтобы было достаточно места как для ОС, так и для всех необходимых зависимостей. В Docker Desktop недавно добавлена ​​поддержка подсистемы Windows для Linux (WSL) 2 , что может быть еще одним вариантом.

2. Репозиторий

Клонируйте репозиторий Superset в свой терминал с помощью следующей команды:

git clone https://github.com/apache/superset.git

Как только эта команда завершится успешно, вы должны увидеть новую supersetпапку в вашем текущем каталоге.

3. Запустите Superset через Docker Compose

Перейдите в папку, созданную на шаге 1:

cd superset

При работе с основной веткой выполните следующие команды для developmentрежима запуска, используя docker compose:

docker compose up

При работе с основной веткой выполните следующие команды для productionрежима запуска, используя docker compose:

docker compose -f docker-compose-non-dev.yml pull

docker compose -f docker-compose-non-dev.yml up

Альтернативно вы также можете запустить конкретную версию Superset, сначала проверив ветку/тег, а затем начав docker composeс TAGпеременной. Например, чтобы запустить версию 3.0.0, выполните следующие команды в системах на базе Linux:

git checkout 3.0.0

TAG=3.0.0 docker compose -f docker-compose-non-dev.yml pull

TAG=3.0.0 docker compose -f docker-compose-non-dev.yml up

Если вы используете Docker Desktop для Windows, выполните следующие команды:

git checkout 3.0.0

set TAG=3.0.0

docker compose -f docker-compose-non-dev.yml pull

docker compose -f docker-compose-non-dev.yml up

ВНИМАНИЕ

Весь контент, принадлежащий экземпляру Superset — диаграммы, информационные панели, пользователи и т. д. — хранится в его базе данных метаданных. В производственной среде необходимо создать резервную копию этой базы данных. При установке по умолчанию с помощью Docker Compose эти данные будут храниться в базе данных PostgreSQL, содержащейся в томе Docker , резервная копия которого не создается. Чтобы избежать риска потери данных, либо используйте управляемую базу данных для своих метаданных (рекомендуется), либо выполняйте собственные регулярные резервные копии, извлекая и сохраняя содержимое базы данных PostgreSQL по умолчанию из ее тома (вот пример того, как выгружать и восстанавливать ).

Вы должны увидеть стену результатов журналирования контейнеров, запускаемых на вашем компьютере. Как только этот вывод замедлится, на вашем локальном компьютере должен быть работающий экземпляр Superset! Чтобы избежать стены текста при будущих запусках, добавьте опцию -dв конец команды docker compose up.

Настройка Docker Compose

Следующее предназначено для пользователей, которые хотят настроить работу Superset в Docker Compose; в противном случае вы можете перейти к следующему разделу.

Вы можете установить дополнительные пакеты Python и применить переопределения конфигурации, выполнив шаги, указанные в docker/README.md.

Вы можете настроить переменные среды Docker Compose для режима разработки и не для режима разработки с помощью docker/.envи docker/.env-non-devсоответственно. Эти файлы среды задают среду для большинства контейнеров в настройке Docker Compose, а некоторые переменные влияют на несколько контейнеров, а другие — только на отдельные.

Одна важная переменная SUPERSET_LOAD_EXAMPLESопределяет, superset_initбудет ли контейнер заполнять пример данных и визуализаций в базе данных метаданных. Эти примеры полезны для изучения и тестирования Superset, но не нужны для опытных пользователей и производственных развертываний. Процесс загрузки иногда может занять несколько минут и задействовать достаточное количество ресурсов ЦП, поэтому вы можете отключить его на устройстве с ограниченными ресурсами.

ПРИМЕЧАНИЕ

Пользователи часто хотят подключиться к другим базам данных из Superset. В настоящее время самый простой способ сделать это — изменить файл docker-compose-non-dev.ymlи добавить свою базу данных в качестве службы, от которой зависят другие службы (через x-superset-depends-on). Другие пытались настроить network_mode: hostслужбы Superset, но это обычно нарушает установку, поскольку конфигурация требует использования преобразователя DNS Docker Compose для имен служб. Если у вас есть хорошее решение для этой проблемы, дайте нам знать!

ПРИМЕЧАНИЕ

Superset использует Scarf Gateway для сбора данных телеметрии. Знание количества установок для различных версий Superset влияет на решения проекта об исправлениях и долгосрочной поддержке. Scarf удаляет личную информацию (PII) и предоставляет только агрегированную статистику.

Чтобы отказаться от сбора данных для пакетов, загруженных через Scarf Gateway при установке на основе Docker Compose, отредактируйте строку x-superset-image:в файлах docker-compose.ymlи docker-compose-non-dev.yml, заменив apachesuperset.docker.scarf.sh/apache/supersetна apache/superset, чтобы получить образ непосредственно из Docker Hub.

Чтобы отключить пиксель телеметрии Scarf, установите SCARF_ANALYTICSпеременную среды Falseв вашем терминале и/или в файлах docker/.envи docker/.env-non-dev.

4. Войдите в Superset

Ваш локальный экземпляр Superset также включает в себя сервер Postgres для хранения ваших данных и уже предварительно загружен некоторыми примерами наборов данных, которые поставляются с Superset. Вы можете получить доступ к Superset прямо сейчас через веб-браузер, посетив http://localhost:8088. Обратите внимание, что многие браузеры теперь по умолчанию используют https— если ваш один из них, убедитесь, что он использует расширение http.

Войдите в систему, используя имя пользователя и пароль по умолчанию:

username: admin

password: admin

5. Подключение Superset к вашему локальному экземпляру

При запуске Superset с использованием dockerили docker composeон запускается в собственном Docker-контейнере, как если бы Superset полностью работал на отдельной машине. Поэтому попытки подключиться к вашей локальной базе данных с использованием имени хоста localhostне будут работать, поскольку localhostэто относится к Docker-контейнеру, в котором работает Superset, а не к вашему фактическому хост-компьютеру. К счастью, Docker предоставляет простой способ доступа к сетевым ресурсам хост-компьютера изнутри контейнера, и мы воспользуемся этой возможностью для подключения к нашему локальному экземпляру базы данных.

Здесь приведены инструкции по подключению к postgresql (который работает на вашем хост-компьютере) из Superset (который работает в своем докер-контейнере). Другие базы данных могут иметь немного другие конфигурации, но суть будет такой же и сводится к двум шагам:

  1. (Пользователи Mac могут пропустить этот шаг.) Настройка локального экземпляра postgresql/базы данных для приема общедоступных входящих подключений. По умолчанию postgresql разрешает только входящие соединения из localhostDocker и под ним, если вы не используете --network=host, localhostбудет ссылаться на разные конечные точки на хост-компьютере и в контейнере Docker соответственно. Разрешение postgresql принимать соединения из Docker предполагает внесение однострочных изменений в файлы postgresql.confи pg_hba.conf; Для этой задачи вы можете легко найти в Интернете полезные ссылки, адаптированные к вашей версии ОС / PG. Для Docker достаточно внести в белый список только IP-адреса 172.0.0.0/8вместо *, но в любом случае вас предупреждают , что выполнение этого в производственной базе данных может иметь катастрофические последствия, поскольку вы открываете свою базу данных для публичного доступа в Интернет.
  2. Вместо localhost, попробуйте использовать host.docker.internal(пользователи Mac, Ubuntu) или 172.18.0.1(пользователи Linux) в качестве имени хоста при попытке подключения к базе данных. Это внутренняя деталь Docker: в системах Mac Docker Desktop создает запись DNS для имени хоста, host.docker.internalкоторая разрешается в правильный адрес хост-машины, тогда как в Linux это не так (по крайней мере, по по умолчанию). Если ни одно из этих двух имен хостов не работает, возможно, вам захочется найти точное имя хоста, которое вы хотите использовать, для этого вы можете сделать ifconfigили ip addr showпосмотреть IP-адрес docker0интерфейса, который должен был быть создан для вас Docker. Альтернативно, если вы даже не видите docker0интерфейс, попробуйте (при необходимости с помощью sudo) docker network inspect bridgeи посмотрите, есть ли запись, "Gateway"и запишите IP-адрес.