Визуализация данных помогает в построении более глубокого понимания данных и ускоряет анализ данных. На рынке доступно несколько зрелых платных продуктов. Недавно я изучил продукт с открытым исходным кодом под названием Apache-Superset, который я нашел очень оптимистичным продуктом в этой области. Некоторые характерные особенности Superset:
- Богатый набор визуализаций данных.
- Простой в использовании интерфейс для исследования и визуализации данных.
- Создавайте информационные панели и делитесь ими.
Прочитав о Superset, я захотел его попробовать, и поскольку Superset - это проект на основе python
языка программирования, мы можем легко установить его с помощью pip
, но я решил настроить его как контейнер на основе Docker. Вы можете следить за другим моим постом о том, как просто исследовать Superset с помощью Docker. Apache-Superset GitHub Repo содержит код для сборки и запуска Superset в качестве контейнера. Поскольку я хочу запускать Superset полностью распределенным образом и в коде возможно меньше изменений (мое мнение), я решил изменить код, чтобы он мог работать в нескольких разных режимах. Ниже приведен список конкретных изменений / улучшений, сделанных в коде.
- Другая версия образа Superset может быть создана с использованием того же кода.
- Конфигурацию суперсета можно легко редактировать и монтировать в контейнер без необходимости перестраивать образ.
- Выполнение асинхронного запроса через исполнитель на базе Celery и управление им через Flower UI.
Исследование стало проще
Хотя для изучения проекта режим разработки является отличным выбором, однако было бы здорово, если бы первоначальное исследование проводилось со всеми функциями, например, в случае Superset, выполнение запросов в асинхронном режиме и сохранение результата в кеше. Вы можете легко изучить Superset с помощью следующих команд.
- Сначала вытащите образ docker-superset из docker-hub.
- Получите docker-compose.yml и superset-config.py из code-base и следуйте той же структуре каталогов, что и в code-base.
- Наконец, запустите образ Superset как контейнер в режиме local или prod с помощью docker-compose:
Запуск Superset в полностью распределенном режиме
Насколько я понимаю, запуск Superset в производственной среде для обслуживания тысяч конечных пользователей должен быть распределенным по своей природе и легко масштабируемым в соответствии с требованиями. На изображении ниже изображена такая установка.
Опубликованный докер-образ Superset можно использовать для получения изображения, изображенного выше.
- Балансировщик нагрузки впереди для маршрутизации запроса от клиентов к одному контейнеру сервера.
- Несколько контейнеров в
server
режиме для обслуживания пользовательского интерфейса надмножества. Запуск контейнераserver
с использованиемdocker run
можно выполнить как
- Несколько контейнеров в режиме
worker
для выполнения SQL-запросов в асинхронном режиме с помощью исполнителя Celery. Запуск контейнераworker
с использованиемdocker run
может быть выполнен как
- Централизованный контейнер Redis или Redis-кластер для работы в качестве слоя кеширования и очередей задач Celery для рабочих.
- Централизованная база данных метаданных Superset.
Я обнаружил, что настроить Superset как контейнер Docker довольно просто, и то же самое можно использовать для разных сред. Вы можете аналогичным образом изучить Superset.
Первоначально опубликовано на gist.github.com.