Найти в Дзене
Datanomics

Миграция решений с Azure DataBricks в Yandex DataProc

Оглавление

Аналитика больших данных является одной из самых быстрорастущих областей в мире из-за огромного количества преимуществ, которые можно получить с ее помощью. 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
Рисунок 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
Рисунок 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
Рисунок 3. DAG выполнения задачи в Apache Airflow

Сравнение платформ

-4

Заключение

Переход на Yandex Cloud DataProc при отсутствии опыта использования
DataProc и Airflow может занять некоторое время и ресурсы. Однако в
результате получается более управляемый и гибкий инструмент хранения и
обработки больших данных.

"Присоединяйтесь к нашему каналу в Telegram и не пропустите ничего важного!"