Миграция решений с Azure DataBricks в Yandex DataProc
Николай Курбатов, аналитик данных, Beltel Datanomics
Аналитика больших данных является одной из самых быстрорастущих областей в мире из-за огромного количества преимуществ, которые можно получить с ее помощью. Xранение, анализ и передача больших данных предполагает использование специальных фреймворков. Наиболее используемые – Spark и Hadoop. Существует множество облачных сервисов, которые предоставляют эти фреймворки для пакетной и потоковой обработки, передачи данных, их хранения и построения сложной аналитики c применением методов машинного обучения.
В силу различных факторов разработчикам иногда приходится переносить свои решения из одного сервиса на другой. Во время переноса могут возникать проблемы, о которых мы расскажем на примере переноса пайплайна обработки данных из сервиса Azure DataBricks в Yandex Cloud DataProc.
О сервисе Yandex Cloud DataProc
Yandex Cloud DataProc – это управляемый сервис Spark и Hadoop, который позволяет быстро создавать кластеры и легко управлять ими, что помогает сократить временные затраты на администрирование и сосредоточиться на работе с данными.
DataProc имеет встроенную интеграцию с другими сервисами в Yandex Cloud, такими как Managed Service for Apache Kafka, Clickhouse, S3 Object Storage, Мониторинг и Cloud Logging.
В Yandex Cloud DataProc есть возможность выбора сервисов для конфигурирования и управления кластером: YARN, HBase, Flink, Hive, Zepplin, Zookeeper и другие.
О переносе решения
Наше решение состояло из проекта на python для интерфейса PySpark. Главный скрипт запускался как задача внутри UI DataBricks. В качестве основного хранилища данных использовался Azure Blob Storage (Рис.1).
Рисунок 1. Архитектура решения в Azure
При переходе стоит обратить внимание на версии Spark в сервисах. Последняя версия в Yandex Cloud DataProc – 3.0.2. Если проект требует больших изменений при смене версий, то целесообразнее изменить конфигурацию кластера при его создании.
В DataBricks есть встроенная функция управления задачами Workflows, которая по расписанию поднимает кластер и выполняет задачу. Все остальное время кластер выключен и не тарифицируется. В DataProc нет такой возможности. Вместо этого можно использовать workflow менеджер – Apache Airflow. Это более гибкий инструмент контроля выполнения задач, который позволяет описать workflow в виде направленного ацикличного графа на языке python.
В Yandex Cloud для создания аналогичного DataBricks workflow, понадобится инстанс с Airflow, сам кластер DataProc и S3 Object Storage (Рис.2). Перед созданием кластера необходимо:
- разрешить кластеру все необходимые правила для входящего и исходящего трафика (настройка групп безопасности);
- в рабочей подсети включить NAT, чтобы мастер нода смогла взаимодействовать c сервисами Yandex Cloud или хостами в других сетях;
- создать сервисный аккаунт, который будет давать доступ кластеру на создание инстанс-групп при автомасштабировании, на запись и чтение в S3 хранилище, на просмотр мониторинга нод и логирования.
Рисунок 2. Архитектура решения в Yandex Cloud
Тестировать задачи и управлять кластером можно через proxy сервисы, IDE приложения или подключаясь напрямую к нодам с промежуточной виртуальной машины по ssh (ВМ). Для этого ВМ нужно разместить в той же подсети и выбрать ту же группу безопасности, что и у кластера DataProc, дополнительно установив в ней правила трафика.
При конфигурировании Airflow нужно указать подключение к Yandex Cloud в настройках connections. Существует несколько вариантов подключения: по OAuth токену и по ключу сервисного аккаунта в виде текста или файла.
Далее можно переходить к созданию графа для запуска кластера, выполнения PySpark задачи и остановки кластера. В версии Airflow 2.2.3 уже созданы DAG операторы удаления, создания и запуска задач на кластере Yandex Cloud DataProc. Однако, чтобы в удобном виде сохранять логи о выполнении задач, можно не удалять кластер, а останавливать его через API Yandex Cloud. Для этого существует CLI утилита для Linux OS – yc.
Таким образом, вычислительный граф имеет вид, представленный на Рис.3.
Рисунок 3. DAG выполнения задачи в Apache Airflow
Сравнение платформ
Заключение
Переход на Yandex Cloud DataProc при отсутствии опыта использования DataProc и Airflow может занять некоторое время и ресурсы. Однако в результате получается более управляемый и гибкий инструмент хранения и обработки больших данных.
Дополнительно:
Построение аналитической платформы в облаке Yandex Cloud (datanomics.ru)
Построение дашборда в Yandex DataLens на примере прогнозирования спроса в ритейле (datanomics.ru)
Облачная аналитика для промышленности. Как внедрять ИИ уже сегодня (datanomics.ru)