Обзор DataHub Project — Open-Source каталог данных. Установка Docker и настройка

Что такое DataHub Project (data catalog)?

DataHub — это каталог данных — платформа метаданных с открытым исходным кодом для modern data stack, основной задачей которой является помощь сотрудникам в обнаружении нужных данных. Первоначально DataHub был создан в LinkedIn, а затем был открыт с открытым исходным кодом под лицензией Apache 2.0.

  • GitHub Stars: 6.2k
  • Contributors: 262

Канал в телеграме: DataHub Project

DataHub Project Telegram Channel


DataHub следует архитектуре, основанной на push-уведомлениях, что означает, что он создан для непрерывного изменения метаданных. Модульная конструкция позволяет масштабировать его по мере роста объема данных в любой организации: от одной базы данных под вашим рабочим столом до нескольких центров обработки данных, расположенных по всему миру.

DataHub имеет встроенную интеграцию с различными системами: Kafka, Airflow, MySQL, SQL Server, Postgres, LDAP, Snowflake, Hive, BigQuery и многими другими. Сообщество постоянно добавляет все больше и больше интеграций.

Прием на основе push-уведомлений может использовать предварительно созданный эмиттер или генерировать пользовательские события с помощью нашей платформы.

Зачем нужен каталог данных?

Вот несколько распространенных вариантов использования и выборка видов метаданных, которые обычно требуются:

  • Search and Discovery (Поиск и обнаружение данных): схемы данных, поля, теги, информация об использовании.
  • Access Control (Контроль доступа): группы контроля доступа, пользователи, политики.
  • Data Lineage (Происхождение данных): выполнение конвейера данынх, запросы, журналы API, схемы API.
  • Compliance (Соответствие): Таксономия типов аннотаций конфиденциальности / соответствия данных.
  • Data Management (Управление данными): конфигурация источника данных, конфигурация приема, конфигурация хранения, политики очистки данных (например, для GDPR «Право на забвение»), политики экспорта данных (например, для GDPR «Право на доступ»).
  • AI Explainability, Reproducibility (Объяснимость ИИ, Воспроизводимость): определение функции, определение модели, выполнение тренировочного прогона, постановка проблемы.
  • Data Ops: выполнение конвейера, обработанные разделы данных, статистика данных.
  •  определения правил качества данных, результаты выполнения правил, статистика данных.

Информация по DataHub

Официальная документация: DataHub Docs

GitHub: datahub-project / datahub DataHub: The Metadata Platform for the Modern Data Stack

Установка DataHub

Быстрый запуск DataHub

Вариантов инсталляций в DataHub огромное количество и все связано в первую очередь с различными вариантами конфигурации среды и кучей компонентов, которые участвуют в работе DataHub.

Минимальные  рекомендованные системные требования для установки DataHub:

  • 2 CPU,
  • 8 ГБ RAM,
  • 2 ГБ области подкачки и
  • 10 ГБ дискового пространства.

Чтобы развернуть DataHub, необходимо выполнить следующие действия. Проверял на Ubuntu, работает. Официальный туториал, по которому выполнял инсталляцию здесь: DataHub Quickstart Guide.

  1.  Установливаем docker, jq и docker-compose. У меня последние версии стояли.
  2. Запускаем в консоле следующие команды:

результат:

После запустится скачка образов и запуск контейнеров. В конце Вы должны получить следующего типа сообщение:

При заходе по адресу http://localhost:9002/ и авторизации, откроется интерфейс DataHub:

В указанной инсталляции я получил следующие контейнеры:

Итого на выходе имеем следующие запущенные контейнеры, необходимые для работы DataHub:

  • Контейнер datahub-frontend-react из образа linkedin/datahub-frontend-react:head
  • Контейнер datahub-datahub-actions-1 из образа acryldata/datahub-actions:head
  • Контейнер datahub-gms из образа linkedin/datahub-gms:head
  • Контейнер mysql из образа mysql:5.7
  • Контейнер schema-registry из образа confluentinc/cp-schema-registry:5.4.0
  • Контейнер broker из образа confluentinc/cp-kafka:5.4.0
  • Контейнер zookeeper из образа confluentinc/cp-zookeeper:5.4.0
  • Контейнер elasticsearch из образа elasticsearch:7.9.3

Еще один вариант инсталляции quickstart

Почему-то на одном арендованном VPS сервере не запустилась по нормальному инсталляция, как в вышеуказанном примере. При этом по разному пытался извернуться — не помогало. Получал одну из ошибок:

Помогло несколько дополнительных комманд, которых в официальной документации естестенно не приводится.

Решение нашел в одном из комментариев на сайте:  I ran datahub docker quickstart and it keeps restarting the | Troubleshoot

Запускал следующие команды:

После этого процесс запустился и все установилось.

Вставка тестовых данных в DataHub Project

После установки DataHub, появится запись:

Запустим команду:

В случае успеха получите информацию:

Install минимальной конфигурации DataHub с помощью docker-compose

todo

Обзор архитектуры DataHub

DataHub — это платформа метаданных 3- го поколения , которая обеспечивает обнаружение данных, совместную работу, управление и сквозную наблюдаемость, созданную для современного стека данных. DataHub использует философию «сначала модель», уделяя особое внимание обеспечению функциональной совместимости между разрозненными инструментами и системами.

На рисунке ниже показана высокоуровневая архитектура DataHub.

Обзор архитектуры DataHub

В архитектуре DataHub можно выделить три основных момента.

  • Schema-first approach to Metadata Modeling (Схематический подход к моделированию)
    Модель метаданных DataHub описывается с помощью языка, не зависящего от сериализации. Поддерживаются как REST, так и GraphQL API. Кроме того, DataHub поддерживает API на основе AVRO поверх Kafka, чтобы сообщать об изменениях метаданных и подписываться на них. Дорожная карта включает в себя веху для поддержки редактирования модели метаданных без кода в ближайшее время, что позволит еще больше упростить использование, сохраняя при этом все преимущества типизированного API.
  • Stream-based Real-time Metadata Platform (Потоковая платформа)
    Инфраструктура метаданных DataHub ориентирована на потоки, что позволяет передавать изменения в метаданных и отражать их в платформе за считанные секунды. Вы также можете подписаться на изменения, происходящие в метаданных DataHub, что позволит вам создавать системы, управляемые метаданными в реальном времени. Например, вы можете создать систему управления доступом, которая может наблюдать за набором данных, который ранее был общедоступным, добавляя новое поле схемы, содержащее PII, и блокировать этот набор данных для проверки контроля доступа.
  • Federated Metadata Serving (Обслуживание федеративных метаданных)
    DataHub поставляется с единой службой метаданных (gms) как часть репозитория с открытым исходным кодом. Однако он также поддерживает федеративные службы метаданных, которыми могут владеть и управлять разные команды — фактически, именно так LinkedIn управляет DataHub внутри. Федеративные службы взаимодействуют с центральным поисковым индексом и графиком с помощью Kafka, чтобы поддерживать глобальный поиск и обнаружение, при этом обеспечивая несвязанное владение метаданными. Такая архитектура очень удобна для компаний, внедряющих data mesh.

Основные компоненты решения DataHub

Платформа DataHub состоит из компонентов, показанных на следующей схеме:

компоненты datahub

Metadata Store (Хранилище метаданных)

Хранилище метаданных отвечает за хранение сущностей и аспектов, составляющих график метаданных. Это включает предоставление API для приема метаданных, выборку метаданных по первичному ключу, поиск сущностей и выборку отношений между сущностями. Он состоит из службы Spring Java, на которой размещается набор конечных точек API Rest.li, а также MySQL, Elasticsearch и Kafka для основного хранилища и индексирования.

Metadata Models (Модели метаданных)

Модели метаданных — это схемы, определяющие форму сущностей и аспектов, составляющих график метаданных, а также отношения между ними. Они определяются с помощью PDL, языка моделирования, очень похожего по форме на Protobuf, но сериализуются в JSON. Сущности представляют собой определенный класс ресурсов метаданных, таких как набор данных, информационная панель, конвейер данных и т.д. Каждый экземпляр Entity идентифицируется уникальным идентификатором, называемым urn. Аспекты представляют собой связанные пакеты данных, прикрепленные к экземпляру объекта, такие как его описания, теги и т.д.

Ingestion Framework

Ingestion Framework — это модульная, расширяемая библиотека Python для извлечения метаданных из внешних исходных систем (например, Snowflake, Looker, MySQL, Kafka), преобразования их в модель метаданных DataHub и записи в DataHub либо через Kafka, либо с использованием API-интерфейсов хранилища метаданных Rest. напрямую. DataHub поддерживает широкий список исходных соединителей на выбор, а также множество возможностей, включая извлечение схемы, профилирование таблиц и столбцов, извлечение информации об использовании и многое другое.

GraphQL API

API GraphQL предоставляет строго типизированный, ориентированный на объекты API, который упрощает взаимодействие с объектами, составляющими граф метаданных, включая API для добавления и удаления тегов, владельцев, ссылок и многого другого для объектов метаданных! В частности, этот API используется пользовательским интерфейсом (обсуждается ниже) для обеспечения поиска и обнаружения, управления, наблюдения и многого другого.

User Interface (Пользовательский интерфейс)

DataHub поставляется с пользовательским интерфейсом React, включающим постоянно развивающийся набор функций, которые делают обнаружение, управление и отладку ваших активов данных простыми и приятными.

Компоненты службы Datahub

Архитектура DataHub:

Datahub можно посчитать за 5 сервисов:

  1. Пользовательский интерфейс Datahub — приложение React.js
  2. Интерфейс Datahub — Java-приложение с Play Framework
  3. Datahub GMS — бэкэнд-приложение на Java
  4. Потребительское приложение Datahub Metadata Change Event (MCE) — потребительское приложение Kafka
  5. Потребительское приложение Datahub Metadata Audit Event (MAE) — потребительское приложение Kafka

Metadata Ingestion — Вставка метаданных в DataHub с помощью Python

Способы вставки данных в DataHub

DataHub поддерживает интеграцию метаданных как на основе push, так и на основе pull.

Интеграция на основе push позволяет вам выдавать метаданные непосредственно из ваших систем данных при изменении метаданных, в то время как интеграции на основе pull позволяют вам «сканировать» или «принимать» метаданные из систем данных, подключаясь к ним и извлекая метаданные в пакетном или инкрементальном виде.

Поддержка обоих механизмов означает, что вы можете максимально гибко интегрироваться со всеми своими системами.

Примеры push-интеграций включают Airflow, Spark, Great Expectations и Protobuf Schemas. Это позволяет вам получить интеграцию метаданных с малой задержкой от «активных» агентов в вашей экосистеме данных.

Примеры pull-интеграций (на основе вытягивания метаданных) включают BigQuery, Snowflake, Looker, Tableau и многие другие.

Python Emitter

В некоторых случаях может потребоваться создать события метаданных напрямую и использовать программные способы отправки этих метаданных в DataHub. Сценарии использования, как правило, основаны на push-уведомлениях и включают отправку событий метаданных из конвейеров CI/CD, пользовательских оркестраторов и т.д.

Пакет acryl-datahub Python предлагает API-интерфейсы эмиттера REST и Kafka, которые можно легко импортировать и вызывать из собственного кода.

REST Emitter

Эмиттер REST представляет собой тонкую оболочку поверх requests модуля и предлагает блокирующий интерфейс для отправки событий метаданных по HTTP. Используйте его, когда простота и подтверждение сохранения метаданных в хранилище метаданных DataHub важнее, чем пропускная способность передачи метаданных. Также используйте REST Emitter, когда существуют сценарии чтения после записи, например, при записи метаданных и последующем их немедленном считывании.

Установить можно с помощью команды:

Пример REST Emitter

Kafka Emitter

Kafka Emitter представляет собой тонкую оболочку над классом SerializingProducer confluent-kafka и предлагает неблокирующий интерфейс для отправки событий метаданных в DataHub. Используйте его, если хотите отделить производителя метаданных по времени для безотказной работы вашего сервера метаданных концентратора данных, используя Kafka в качестве высокодоступной шины сообщений.

Например, если ваша служба метаданных DataHub не работает из-за плановых или незапланированных простоев, вы все равно можете продолжать собирать метаданные из критически важных систем, отправляя их в Kafka. Также используйте этот эмиттер, когда пропускная способность передачи метаданных важнее, чем подтверждение сохранения метаданных в серверном хранилище DataHub.

Примечание. Эмиттер Kafka использует Avro для сериализации событий метаданных в Kafka. Изменение сериализатора приведет к необрабатываемым событиям, поскольку DataHub в настоящее время ожидает, что события метаданных через Kafka будут сериализованы в Avro.

Установка производится с помощью команды:

Пример использования Kafka Emitter

Пример вставки тестовых данных на Python

todo…


Канал в телеграме: DataHub Project

DataHub Project Telegram Channel


Полезные статьи и источники, использованные для написания этой статьи

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x