Суперкомплектация Apache Superset
Airbnb«выжал все соки» из Superset и успешно масштабировала BI
Введение
Деятельность Airbnb сопряжена с использованием большого количества данных. Для их анализа используется сразу несколько различных инструментов, главным из которых является Apache Superset™ или просто Superset.
Superset - это мощная платформа для визуализации данных и бизнес-аналитики, которая позволяет пользователям создавать интерактивные дашборды и отчеты на основе различных источников данных. С помощью Apache Superset Вы можете быстро и легко анализировать данные, отслеживать ключевые метрики и принимать важные решения на основе фактов. Эта платформа предлагает широкий набор инструментов для работы с данными, включая графики, таблицы, карты, фильтры и многое другое. Кроме того, Apache Superset имеет простой и интуитивно понятный интерфейс, который позволяет быстро освоиться с платформой и начать работу с данными даже новичкам. Если Вы ищете эффективный способ визуализации данных и анализа бизнес-процессов, то Apache Superset именно то, что Вам нужно.
Компания Airbnb принимала непосредственное участие в развитии Superset. В прошлой статье мы подробно описали путь проекта и предпосылки появления новых функций. В этой статье мы хотим поговорить о технических аспектах масштабирования Superset, а также об обширном комьюнити, благодаря которому стали возможны пользовательские интеграции с другими корпоративными инструментами и системами.
Поговорим о цифрах
Компания Airbnb, стоящая у истоков Superset, тесно сотрудничает с разработчиками открытого кода. Благодаря этому активному взаимодействию Superset каждую неделю имеет дело с:
- 2 000 пользователей;
- 50 000 запросами SQL Lab;
- 6 000 дашбордами и 125 000 графиками.
В настоящее время экосистема Airbnb насчитывает более 100 000 таблиц и виртуальных наборов данных, на основе которых создано около 200 000 диаграмм и 14 000 дашбордов.
Сотрудники самых разных рангов активно использует Superset для решения огромного количества задач, связанных с визуализацией данных и бизнес-аналитикой.
Как Airbnb масштабировал Superset
Чтобы обеспечить эффективную и бесперебойную работу Airbnb компания добавила в Superset несколько полезных пользовательских функций.
Кэширование
Около 90% дашбордов просматриваются сотрудниками Airbnb каждый день и не по одному разу. Поэтому без ежедневного кэширования просто не обойтись. С помощью Apache Airflow компания реализовала эффективную стратегию «прогрева» кэша, применяемую к регулярно просмотриваемым дашбордам. Поскольку Superset поддерживает кэширование запросов в Redis™*, Airbnb смогла загружать наиболее популярные дашборды в нерабочее время, тем самым снижая нагрузку на механизмы запросов в пиковые часы.
Domain Sharding
При загрузке дашборда в Superset отдельные запросы выполняются одновременно для каждого графика, представленного на дашборде. Это достаточно эффективно только в том случае, если дашборды сравнительно небольшие. При использовании дашбордов с большим количеством графиков мы неизбежно сталкиваемся с проблемами, связанными с настройками браузера. Большинство современных браузеров ограничивают количество одновременных запросов к одному домену (т. е. к API Superset), что приводит к замедлению рабочего процесса. Чтобы решить эту проблему Airbnb создали опцию настройки SUPERSET_WEBSERVER_DOMAINS. Установив этот параметр, администраторы могут разрешить столько одновременных запросов к дашбордам, сколько может выдержать их движок базы данных. Таким образом, можно поддерживать около 24 одновременных запросов к одному дашборду. Благодаря этой дополнительной функции пользователи могут создавать сложные дашборды, не влияя при этом на производительность системы.
Управление нагрузкой на движок базы данных
Superset можно оптимизировать по собственному усмотрению и подогнать его под свои нужды. Определенные виды модернизации можно провести только на уровне движка базы данных. Ввиду напряженной работы Airbnb многие запросы выполняются в среднем за 25 секунд. Поэтому, чтобы гарантировать, что кластеры движков баз данных не будут перегружены, компания предприняла следующие меры:
- Маршрутизация запросов исходя из их приоритетности: для того, чтобы оптимизировать использование ресурсов, компания направляет свои запросы в разные кластеры, используя конфигурацию DB_CONNECTION_MUTATOR. Оптимизированные запросы к дашбордам отправляются в один кластер, а специальные запросы к SQL Lab - в другой;
- Ограничение числа параллельных сеансов для каждого пользователя: для каждого пользователя системы установлено ограничение: максимально возможное количество одновременных запросов к механизму базы данных равно 3. На первый взгляд может показаться, что этого недостаточно, но практика показала, что на деле такого количества запросов вполне хватает;
- Ограничение размера больших запросов: компания ограничивает размер выполняемых запросов определенным объемом памяти или количеством разделов, благодаря чему пользователи оптимизируют сложность своих запросов.
В чем Superset действительно силен
В качестве BI-решения Superset способен удовлетворить самые высокие запросы. Несмотря на то, что на рынке существует множество аналогичных продуктов, Airbnb продолжаем использовать и инвестировать в Superset по многим причинам: привычка, гибкие возможности интеграции, простота использования и настройка и т. д. - но по-настоящему весомым преимуществом Superset для компании является то, что это open-source инструмент.
Будучи активным участником проекта Apache Superset, компания смогла адаптировать Superset для удовлетворения своих бизнес-потребностей с помощью:
- реализации функций с открытым исходным кодом;
- создания собственных преобразований. Бэкэнд Superset написан на Python, что позволяет легко дополнять и настраивать его с помощью Monkey patch.
При принятии решения о том, стоит ли создавать собственный инструмент или лучше купить уже готовый продукт, Вы неизбежно столкнетесь с проблемой 80/20. Готовое решение, скорее всего, даст Вам 80 % того, что Вам нужно, но оставшиеся 20 % могут быть сопряжены с непреодолимыми трудностями. Безусловно, у Superset есть ряд недостатков по сравнению с некоторыми SaaS-решениями, но они в значительной степени компенсируется возможностью кастомизации.
Ниже описаны некоторые функции, которыми Airbnb обогатила Superset.
Metric Explorer
Metric Explorer, компонент Dataportal (инструмент поиска информации в Airbnb), позволяет командам специалистов Airbnb изучать данные из коробки. Смысл в том, чтобы любой сотрудник мог с легкостью изучать бизнес-показатели, созданные на основе фреймворка Minerva, за определенный отчетный период, например, последние 7 дней.
При разработке Metric Explorer компания столкнулась с дилеммой. Airbnb нужен был надежный инструмент для нарезки метрик, который использовал бы метаданные и бизнес-контекст. При этом Airbnb не хотел создавать еще один инструмент для создания дашбордов и видоизменять значительную часть функций Superset.
Для того, чтобы разрешить эту дилемму, было принято решение выделить фронтенд визуализаций Superset в пакеты @superset-ui. Это не только решило проблему Metric Explorer, но и позволило любому пользователю Superset создавать любые пользовательские приложения для работы с данными, использующие бэкэнд Superset. На рисунках 2 и 3 представлены скриншоты Metric Explorer.
Интеграция Security Manager и политики доступа к данным
Хотя по умолчанию Superset поставляется с Security Manager, объем обрабатываемых данных в Airbnb и сложность политики доступа к данным потребовали индивидуального подхода.
Компания воспользовалась функционалом Security Manager с помощью опции настройки CUSTOM_SECURITY_MANAGER, а также некоторых модификаций RESTful API и Flask-AppBuilder. Благодаря данному подходу компания смогла с легкостью интегрировать в Superset свою строжайшую политику доступа к данным.
Компания решила не останавливаться на достигнутом и еще больше обогатить Superset, интегрировав в него возможность обработки запросов на доступ к данным. Для этого компания добавила ряд настроек фронтенда в сочетании с Security Manager. На рисунках 4-6 показана интеграция политики доступа к данным в Superset.
Скорее всего, если бы компания использовала другие менее гибкие инструменты, таких результатов не удалось бы достичь.
Метрики
Как уже упоминалось ранее, Airbnb разработала свой собственный фреймворк Minerva. Данные в Superset можно запрашивать через Minerva API, ориентированную на метрики и базу данных SQL, поддерживаемую кластером Apache Druid. Для того, чтобы облегчить поиск данных, все метрики собраны в едином виртуальном источнике данных Superset. Этот единый источник данных содержит тысячи показателей и метрик.
Скорее всего, традиционный BI-инструмент не позволил бы так эффективно и легко обрабатывать большие объемы данных, как это делает Superset.
Заключение
Как видно из примеров, приведенных выше, за последние пять лет компания Airbnb серьезно вложилась в совершенствование Superset. Время и усилия, которые приложила компания, позволили ей создать BI-систему, позволяющую любому сотруднику самостоятельно анализировать данные, необходимые для выполнения своей работы. Широкие возможности кастомизации Superset, а также возможность создания дорожной карты open-source продуктов стали залогом успеха Superset.












