В наши дни все говорят о программном обеспечении с открытым исходным кодом. Однако в поле хранилища данных (DWH) это по-прежнему встречается нечасто. Почему это?

Для этого поста я выбрал несколько технологий с открытым исходным кодом и использовал их вместе, чтобы построить полную архитектуру данных для системы хранилища данных.

Я выбрал Apache Druid для хранения данных, Apache Superset для запросов и Apache Airflow в качестве оркестратора задач.

Друид - хранилище данных

Druid - это распределенное хранилище данных с открытым исходным кодом, ориентированное на столбцы, написанное на Java. Он разработан для быстрого приема огромных объемов данных о событиях и предоставления запросов с малой задержкой поверх данных.

Зачем использовать Друид?

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

Помня о сравнении современных OLAP-технологий, я предпочел Druid ClickHouse, Pinot и Apache Kylin. Недавно Microsoft объявила, что добавит Druid в свой Azure HDInsight 4.0.

Почему не Друид?

Картер Шанклин написал подробный пост об ограничениях Друида на Horthonwork.com. Основная проблема заключается в поддержке SQL-соединений и расширенных возможностей SQL.

Архитектура Друида

Druid масштабируется благодаря кластерной архитектуре. У вас есть три разных типа узлов - средний-менеджер-узел, исторический узел и брокер.

Замечательно то, что вы можете добавить столько узлов, сколько захотите, в конкретной области, которая вам больше всего подходит. Если вам нужно выполнить много запросов, вы можете добавить больше брокеров. Или, если нужно загрузить много данных, вы должны добавить менеджеров среднего звена и так далее.

Ниже показана простая архитектура. Вы можете узнать больше о дизайне Druid здесь.

Apache Superset - пользовательский интерфейс

Самый простой способ сделать запрос к Druid - использовать легкий инструмент с открытым исходным кодом под названием Apache Superset.

Он прост в использовании и имеет все распространенные типы диаграмм, такие как пузырьковая диаграмма, подсчет слов, тепловые карты, коробчатая диаграмма и многие другие.

Druid предоставляет Rest-API, а в последней версии также SQL Query API. Это упрощает использование с любым инструментом, будь то стандартный SQL, любой существующий инструмент бизнес-аналитики или пользовательское приложение.

Apache Airflow - оркестратор

Как упоминалось в Оркестраторы - Планирование и мониторинг рабочих процессов, это одно из наиболее важных решений.

В прошлом широко использовались инструменты ETL, такие как Microsoft SQL Server Integration Services (SSIS) и другие. Именно там происходило преобразование, очистка и нормализация ваших данных.

В более современных архитектурах этих инструментов уже недостаточно.

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

Я настоятельно рекомендую вам прочитать сообщение в блоге Максима Бошемина о Функциональной инженерии данных - современной парадигме пакетной обработки данных. Это гораздо глубже в том, какими должны быть современные конвейеры данных.

Также обратите внимание на чтение Крах инженера по обработке данных, где Макс объясняет о ломающемся хранилище данных и многом другом.

Зачем использовать Airflow?

Apache Airflow - очень популярный инструмент для оркестровки этой задачи. Airflow написан на Python. Задачи записываются в виде направленных ациклических графов (DAG). Они также написаны на Python.

Вместо того, чтобы инкапсулировать вашу критическую логику преобразования где-то в инструменте, вы помещаете ее туда, где она принадлежит, внутри Orchestrator.

Еще одно преимущество - использование простого Python. Нет необходимости инкапсулировать другие зависимости или требования, такие как выборка с FTP, копирование данных из A в B, запись пакетного файла. Вы делаете это и все остальное в том же месте.

Особенности воздушного потока

Более того, вы получаете полнофункциональный обзор всех текущих задач в одном месте.

Более важные особенности Airflow заключаются в том, что вы пишете рабочие процессы, как если бы вы пишете программы. Внешние задания, такие как Databricks, Spark и т. Д., Не вызывают проблем.

Тестирование работы проходит через сам Airflow. Это включает в себя передачу параметров другим заданиям ниже по потоку или проверку того, что выполняется в Airflow, и просмотр фактического кода. Файлы журнала и другие метаданные доступны через веб-интерфейс.

(Повторно) запускать только части рабочего процесса, а зависимые задачи - это важная функция, которая выходит из коробки, когда вы создаете свои рабочие процессы с помощью Airflow. Задания / задачи выполняются в контексте, планировщик передает необходимые детали, плюс работа распределяется по вашему кластеру на уровне задач, а не на уровне DAG.

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

ETL с Apache Airflow

Если вы хотите начать с Apache Airflow в качестве нового инструмента ETL, начните с этого Передового опыта ETL с Airflow, которым с вами поделились. В нем есть простые ETL -примеры, с простым SQL, с HIVE, с Data Vault, Data Vault 2 и Data Vault с процессами Big Data. Это дает вам отличный обзор того, что возможно, а также того, как вы к этому подойдете.

В то же время есть контейнер Docker, который вы можете использовать, то есть вам даже не нужно настраивать какую-либо инфраструктуру. Контейнер можно вытащить отсюда.

Для репозитория GitHub перейдите по ссылке etl-with-airflow.

Заключение

Если вы ищете архитектуру данных с открытым исходным кодом, вы не можете игнорировать Druid для быстрых ответов OLAP, Apache Airflow в качестве оркестратора, который поддерживает ваши данные и расписания, а также простой в использовании инструмент панели мониторинга, такой как Apache Superset.

По моему опыту, Druid чертовски быстр и идеально подходит для замены куба OLAP традиционным способом, но все же требует более расслабленного запуска для установки кластеров, приема данных, просмотра журналов и т. Д. посмотрите на Импи, созданную основателями Druid. Он создает все необходимые вам сервисы вокруг Druid. К сожалению, это не открытый исходный код.

Apache Airflow и его функции в качестве оркестратора - это то, чего еще не произошло в традиционных средах бизнес-аналитики. Я считаю, что это изменение происходит очень естественно, когда вы начинаете использовать открытый исходный код и больше новых технологий.

А Apache Superset - это простой и быстрый способ начать работу и отображать данные из Druid. Там есть лучшие инструменты, такие как Tableau и т. Д., Но не бесплатно. Вот почему Superset хорошо вписывается в экосистему, если вы уже используете вышеупомянутые технологии с открытым исходным кодом. Но как корпоративная компания вы можете потратить немного денег на эту категорию, потому что это то, что пользователи могут видеть в конце дня.

Ссылки по теме:

Первоначально опубликовано на www.sspaeti.com 29 ноября 2018 г.