ADB-Spark Connector: интеграция Spark и Greenplum от Аренадата

Автор Категория , , ,
ADB-Spark Connector: интеграция Spark и Greenplum от Аренадата

Мы уже рассказывали про коннектор Greenplum-Spark, 2-я версия которого вышла в октябре 2020 года. А сегодня рассмотрим российскую альтернативу для отечественной MPP-СУБД Arenadata DB на базе Greenplum, выпущенную компанией Аренадата в июле 2021 года. Краткий обзор ADB-Spark Connector: архитектура, принципы работы, сценарии использования, а также отличия от PXF-фреймворка и варианта Pivotal.

Трудности PXF в Arenadata DB

В основе отечественных Big Data решений, выпускаемых компанией Аренадата, лежат популярные open-source фреймворки, адаптированные для корпоративного использования. А, поскольку open-source статус позволяет зарегистрировать эти модификации как в качестве российского ПО, то продукты Arenadata активно используются в РФ для проектов цифровизации государственных организаций и частных предприятий. В частности, в июне 2021 года банк ВТБ объявил о развертывании новой платформы для сбора, хранения, обработки и анализа системных логов на базе Arenadata EDP. Ожидается, что это снизит TCO в 2 раза по сравнению с предыдущим вариантом реализации, повысить надёжность и качество внутрибанковских сервисов, а также позволит намного быстрее выявлять источники нештатных ситуаций благодаря ML-инструментам предиктивного анализа больших данных [1].

Развивая эту корпоративную платформу аналитики больших данных, компания Аренадата в июле 2021 года представила средство интеграции между ее компонентами: аналитической MPP-СУБД на базе Greenplum и Apache Spark. Этот ADB-Spark Connector обеспечивает высокоскоростную и параллельную передачу информации между Spark и Arenadata DB по протоколу gpfdist в HTTP-сервере, обеспечивая запись на сегменты Greenplum без участия мастер-узла и возможность гибкого партиционирования при чтении данных из Greenplum в Spark. Также ADB-Spark Connector позволяет не устанавливать утилиту gpfdist на каждом узле Spark-кластера и избежать технологии PXF, которая ранее использовалась для обмена данными между Arenadata DB и Arenadata Hadoop [2].

Напомним, PXF (Platform eXtension Framework) – это специализированный Java-фреймворк параллельного обмена данными со сторонними системами, который обеспечивает одновременное взаимодействие всех сегментов кластера Greenplum с внешним источником данных. PXF появился еще в 5-ой версии Greenplum в 2017 году как отдельный процесс на сервере, который общается с сегментами Greenplum через REST API и использует сторонние Java-клиенты и библиотеки для связи этой MPP-СУБД с внешними системами через JDBC. 

PXF предоставляет коннекторы для доступа к данным во внешних источниках, которые сопоставляют их с определением внешней таблицы Greenplum. Один процесс PXF-агента на каждом хосте сегмента Greenplum выделяет рабочий поток для каждого экземпляра СУБД, который участвует в запросе к внешней таблице. Агенты PXF на хостах с несколькими сегментами взаимодействуют с внешним хранилищем данных параллельно [3]

В Arenadata DB технология PXF реализована в виде JDBC-плагина с API, который поддерживает запросы чтения (SELECT) и записи (INSERT). Поскольку Плагин PXF JDBC сам является клиентом JDBC, разворачивать PXF на хосте с внешней СУБД не требуется. Однако, для его практического использования необходимо установить этот плагин на всех узлах PXF вместе с JDBC -драйвером для внешней базы данных с возможностью подключения к ней. Кроме того, таблица PXF и таблица во внешней СУБД должны иметь одинаковую схему, т.е. имена и типы столбцов должны совпадать. Также в официальной документации Arenadata DB отмечены ограничения по именованию таблиц, поддерживаемым типам данных и невозможности одновременной обработки внешней таблицы ADB запросов SELECT и INSERT.

Распараллеливание в плагине PXF JDBC обеспечивается через партиционирование – одновременный доступ к внешней таблице на чтение из нескольких узлов PXF. Способ партиционирования определяется типом данных столбца разделения: INTDATE и ENUM. При запросах INSERT рекомендуется использовать промежуточные (staging-) таблицы во внешней СУБД [4].

Таким образом, PXF-технология имеет ряд ограничений, устранить которые разработчики платформы Arenadata EDP решили, выпустив ADB-Spark Connector для двусторонней связи между Greenplum и Spark. На практике этот коннектор ориентирован на построение корпоративных хранилищ и озер данных с Arenadata Hadoop и Arenadata DB. Примеры подобных кейсов мы рассматривали этой здесь и здесь.

ADB-Spark Connector от Аренадата vs интеграция Spark c Greenplum от Pivotal

ADB-Spark Connector построен на версиях Scala 2.11 и 2.12, а также библиотеке ScalikeJDBC, которая обеспечивает доступ к SQL-СУБД для разработчиков Scala, представляя собой оболочку JDBC API. QueryDSL в ScalikeJDBC гарантирует типобезопасность и поддерживаемость кода. А для повышения производительности вместо Akka HTTP для реализации gpfdist-протокола в ADB-Spark Connector используется фреймворк Finagle – расширяемая RPC-система для построения многопоточных JVM-сервисов. Изначально Finagle был создан компанией Twitter для внутреннего пользования, но сейчас успешно применяется в Foursquare, Pinterest, Tumblr, Tinder, Тинькофф, XiaoMi и многих других Big Data проектах [5]. Его реализация многопоточности отлично подходит для поддержки множества одновременных сессий от сегментов ADB [3].

Разработчики ADB-Spark Connector утверждают, что по сравнению со Spark-Greenplum коннектором от компании Pivotal, их решение обладает следующими преимуществами:

  • более гибкое партиционирование таблиц – 5 способов вместо 2;
  • большее число типов данных, включая интервалы и массивы;
  • дополнительные функциональные возможности – поддержка пакетного режима в Spark, сбор статистики для построения планов запросов при помощи оптимизатора Catalyst и выполнение произвольных SQL-запросов через мастер-узел кластера Arenadata DB.

Пока ADB-Spark Connector поддерживает версии Spark 2.3.x и 2.4.x, в перспективе будет добавлена 3-я версия этого фреймворка аналитики больших данных с поддержкой потоковой передачи.

Освоить администрирование и эксплуатацию Greenplum и Spark на примере решений Arenadata или как отдельные инструменты эффективного хранения и аналитики больших данных вам помогут специализированные курсы в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://arenadata.tech/about/news/vtb-sozdayot-novuyu-sistemu/
  2. https://arenadata.tech/about/news/greenplum-spark-connector/
  3. https://gpdb.docs.pivotal.io/6-17/admin_guide/external/pxf-overview.html
  4. https://eax.me/scala-finagle/
  5. https://docs.arenadata.io/adb/PXFJDBC/index.html