Как начать использовать Apache Airflow с ClickHouse?

Команда Ёлва

Подпишитесь, чтобы получать новые статьи

Подписаться

В рамках нашей новой статьи рассмотрим один из популярных инструментов ETL подготовки данных Airflow для аналитической базы данных ClickHouse. Давайте начнем с того, что разберем, что же это за такие инструменты ClickHouse и Airflow и зачем может понадобиться их использовать вместе.

Что такое ClickHouse и зачем он нужен?

ClickHouse – это распределенная аналитическая колоночная СУБД, разработанная Яндексом. Ее отличительной особенностью является эффективное выполнение сложных аналитических запросов на больших объемах данных. ClickHouse наилучшим образом подходит для задач, у которых есть постоянный поток событий и требуется реализовать аналитику в реальном времени по этим данным. Это достигается за счет того, что ClickHouse использует другой порядок хранения данных, чем в классических реляционных СУБД.

Чем больше данных хранит система, тем более важной становится грамотный выбор специализации хранилища под сценарий работы. К сожалению, на текущий момент нет такой базы данных, которая бы подходила под все сценарии работы и была бы универсальной. В нашем случае мы рассматриваем цели визуальной аналитики, поэтому для данного сценария работы наилучшим образом подходит колоночная СУБД ClickHouse.

Преимуществами использования ClickHouse по сравнению с другими СУБД для аналитики являются:

  • Возможность считывания только необходимых для аналитики данных. Если для построения дашборда требуется только 5 столбцов из 100, то за счет столбчатого хранения данных база данных не будет загружать все столбцы, а отправит запрос только на нужные. Таким образом, существенно сокращается объем запрашиваемых и получаемых данных.
  • Поскольку данные читаются пачками, то они лучше сжаты, за счет уменьшения объема ввода-вывода.
  • И как результат, за счет того, что уменьшается количество данных ввода-вывода, то больше данных умещается в системный кэш, что также положительно влияет на производительность.
  • Является легко разворачиваемой и свободно-распространяемой базой данных, в связи с чем снимает финансовую нагрузку на покупку лицензий.

Мы с вами рассмотрели преимущества базы данных и причину ее выбора под нашу задачу. И следующий вопрос: как же получить, подготовить и выгрузить данные в ClickHouse? Для этого нам потребуется дополнительный инструмент для разработки ETL-процессов. Один из таких инструментов, который мы рассмотрим в рамках данной статьи, — это Apache Airflow.

Что такое Apache Airflow и зачем он нужен?

Apache Airflow выполняет функции получения, обработки и дальнейшей трансляции данных в базу данных. Так же, как и ClickHouse, он является свободно-распространяемым ПО. Самым частым сценарием использования решения является получение данных из множества различных источников (SQL Server, PostgreSQL, различные API приложений и даже 1С), обработка и подготовка этих данных и затем трансляция этих данных в единое хранилище (например, базу данных ClickHouse для целей дальнейшей аналитики). Он решает распространенную проблему, возникающую в командах по работе с большими данными, связанную с объединением связанных заданий в непрерывный рабочий процесс. Airflow можно использовать практически для всех видов данных, и существует множество различных задокументированных случаев использования, наиболее распространенными из которых являются проекты, связанные с большими данными.

Apache Airflow написан на Python, что обеспечивает его гибкость и надежность. Его удобный пользовательский интерфейс упрощает задачи управления процессом работы с данными, например, создание заданий и настройку платформы. Внутри себя инструмент предполагает использование программного кода, поэтому пользователи могут писать, какой код они хотят выполнить на любом из этапов процесса работы с данными. Также нужно отметить, что Apache Airflow полностью берет на себя выполнение и контроль грамотной работы настроенных задач по работе с данными. В случае сбоя на каком-либо этапе процесса система пришлет уведомление, а сам сбой будет залогирован для последующего анализа причин проблемной ситуации разработчиком. Преимущество Airflow перед другими решениями заключается в неограниченной расширяемости, как в плане дополнительных плагинов, так и в масштабируемости самого решения и объема обрабатываемых данных, что дает возможность применять его практически в любой области.

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

Как развернуть Apache Airflow в Yandex Cloud?

Для разворачивания Apache Airflow в облаке потребуется виртуальная машина или выделенный сервер, на котором будет развернуто решение. Подробнее про виртуальные машины можно узнать здесь.

В Yandex Cloud такой сервис называется Compute Cloud. Можно арендовать виртуальную машину под необходимые параметры вашей задачи и развернуть Apache Airflow самостоятельно, а можно использовать уже готовый образ в Yandex Cloud. При использовании готового образа не требуется никакой дополнительной установки, и при первом же запуске Apache Airflow будет установлен и запущен. Подробнее про разворачивание готового образа можно прочитать здесь. Внизу страницы также можно ознакомиться с тарифами на различные конфигурации виртуальной машины с Airflow на борту. Таким образом, от вас потребуется только настройка индивидуальных параметров (источников, настроек обработки, задач и т.д.).

Давайте рассмотрим процесс разворачивания виртуальной машины из готового образа Apache Airflow.

Если вы уже зарегистрированы в Yandex Cloud, то на этой странице можно сразу перейти на создание виртуальной машины, нажав на кнопку «Создать ВМ». Если вы еще не зарегистрированы в сервисе Yandex Cloud, то сперва нужно пройти регистрацию в этом сервисе по вашей учетной записи Яндекса.

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

В самом первом поле раздела «базовые параметры» необходимо задать имя для виртуальной машины. Допустим, пусть это будет vmairflow. Описание можно оставить пустым, а можно указать, что эта виртуальная машину будет использоваться в качестве сервера для Apache Airflow. Зону доступности можно оставить по умолчанию. Далее обязательно удостоверьтесь, что в пункте «Выбор образа/загрузочного диска» выбран продукт Apache Airflow.

Если продукт не выбран, перейдите на вкладку «Cloud Marketplace» и кликните на соответствующий продукт – Apache Airflow 2.

На следующем шаге в пункте «диски и файловые хранилища» необходимо выбрать тип хранилища (HDDили SSD) и указать необходимый размер жесткого диска. В нашем примере укажем 30 гигабайт.

Следующий раздел – вычисляемые ресурсы. Конфигурация зависит от предполагаемой вычислительной нагрузки виртуальной машины. Оставим по умолчанию, при использовании можно будет скорректировать эти параметры под необходимую потребность.

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

В разделе «Доступ» необходимо указать логин администратора, а также SSH-ключ компьютера, с которого будет осуществляться доступ к виртуальной машине администратором.

После того как все поля корректно заполнены, можно смело нажимать на кнопку «Создать ВМ». После этого виртуальная машина с выбранными параметрами начнет создаваться (обычно процесс создания занимает не более 10 минут).

Когда ВМ будет создана и готова к работе, её статус изменится на «Running». Это означает, что машина развернута и работает корректно. После этого необходимо кликнуть созданную виртуальную машину vmairflow и перейти на страницу с основными параметрами машины. Внизу страницы в разделе «Сеть» указан публичный IPv4, он понадобится нам для того, чтобы выполнить вход в веб-интерфейс Apache Airflow.

Скопируйте этот IP-адрес и вставьте его в адресную строку браузера. Если все предыдущие шаги выполнены корректно, то у вас откроется страница авторизации Apache Airflow.

Таким образом, вы успешно развернули Apache Airflow на виртуальном сервере в Yandex Cloud.

Как создать пользователя и выполнить подключение к ClickHouse?

Давайте создадим пользователя, чтобы выполнить вход в Airflow и настроить подключение. Для этого необходимо выполнить ssh-подключение под учетной записью администратора к виртуальной машине, на которой развернут Airflow. Это можно сделать через стандартный инструмент Windows — командная строка. В консоли командной строки введите следующую команду:

ssh username@ip-сервера

username – логин администратора, который вы задавали при создании виртуальной машины, а ip-адрес этот тотip-адрес v4, который находится на странице обзора виртуальной машины. При первом входе система выдаст предупреждение безопасности, необходимо написать yes и нажать клавишу enter.

В результате должно появиться следующее окно с возможностью вводить команды в виртуальную машину:

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

airflow users create --email EMAIL --firstname firstname --lastname lastname --password password --role Admin --username username

где:

EMAIL – это email создаваемого пользователя,

firstname – имя пользователя,

lastname – фамилия пользователя,

password – пароль,

role – роль безопасности,

username – это логин пользователя.

В результате должна получиться примерно такая команда:

airflow users create --email lsolovev@yolva-it.ru --firstname leonid --lastname solovev  --password 123456--role Admin --username lsolovev

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

Для настройки подключения к базе данных (в нашем примере – ClickHouse) необходимо перейти на вкладку Admin и выбрать Connections:

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

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

А в данной статье  мы познакомились с такими инструментами, как ClickHouse и Airflow, а также разобрали особенности этих инструментов. После анализа инструментов мы развернули ETL-приложение ApacheAirflow в среде Yandex Cloud и выполнили первичную настройку, а также рассмотрели настройки подключения к кластеру ClickHouse.

Если у вас остались какие-либо вопросы по рассмотренным инструментам, обращайтесь к нам в «Ёлва» и мы с радостью на них ответим.

#BI#ClickHouse#DataLens#DB#Yandex Cloud

Подпишитесь на наши статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *