Ques/Help/Req Из цикла ETL: развертывание Airflow

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
В этой части покажу, как развернуть Airflow – замечательное ПО для автоматизации почти всего на Python. Мы будем использовать в качестве базы Windows 10 + Linux WSL (“Windows Subsystem for Linux” – подсистема Linux на Windows).

Это статья из цикла “5 ETL для зоопарка ботов”. В нем я пошагово разбираю, как наладить потоки данных из разных библиотек и конструкторов ботов на разных языках и стеках. В основе лежат Python и его библиотеки.

Вот предыдущие статьи цикла, подводящие к текущей:

  1. Анонс цикла с перечнем технологий
  2. Настройка потока логов «Из Dialogflow в BigQuery»
  3. Python для аналитики ad hoc из BigQuery

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

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

Контейнеровоз Evergreen, застрявший в Суэцком канале, март 2021 г.0


Установка Linux WSL​


Некоторые важнейшие компоненты Airflow под Win не адаптированы. Поэтому нам понадобится Linux. откроем командную строку Windows 10 как администратор и наберем:

wsl —install

Процесс скачивания дистрибутива Ubuntu начался:

Из цикла ETL: развертывание Airflow1


Чтобы пакет ОС “развернулся”, перезагрузим Windows. Сразу после авторизации окно командной строки откроется само и установка Linux продолжится. Спустя несколько минут потребуется ввести имя пользователя и пароль:

Из цикла ETL: развертывание Airflow2


На этом установку подсистемы мы завершаем. Теперь Ubuntu можно запустить из меню “Пуск”:

Из цикла ETL: развертывание Airflow3


Установка Airflow​


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

pip install virtualenv

Создадим виртуальное окружение для изоляции проекта от остальных событий и мест в Linux:

virtualenv airflow_env source airflow_env/bin/activate

Теперь настало время настроить проект. Для этого создадим отдельную папку и зайдем в нее:

mkdir airflow cd airflow

Установим airflow:

pip install apache-airflow

Обязательное условие для запуска утилиты – работающая база данных. Мой проект использует BigQuery API, но использовать следующую команду все равно придется:

airflow db init

Поскольку у Airflow есть и браузерный UI с авторизацией, то создадим пользователя-админа:

airflow users create —username admin -password admin -firstname admin -lastname admin -role Admin -email [email protected]

Запустим веб-сервер с экземпляром Airflow:

airflow scheduler

Так вы сможете поиграться с этой прекрасной программой в браузере, просто перейдя по ссылке (в моем случае 8081 – настроила нестандартный порт, пока разбиралась с мануалом по установке).

Из цикла ETL: развертывание Airflow4


Спустя примерно час в списке DAG’ов (Directed Acyclic Graph) появятся обучающие скрипты (их Airflow подтянет самостоятельно). Прежде чем мы перейти к настройке своего кода, можно “провалиться” в парочку (например, ‘example_bash_operator’) и посмотреть «питоническое» содержимое во вкладке ‘Code’:

Заметили, в чем отличие от классического скрипта? Об этом подробнее расскажу в следующей статье.5


Заключение​


Конечно, на этом я не остановлюсь, ибо Airflow вызывает у меня любовь. Появилась она, когда отслеживать вручную многочисленные скрипты на crontab (утилита Linux, позволяющая запустить код по расписанию) стало неудобно. Прописывать руками все то, что умеет Airflow, бессмысленно: там и аналитика исполняемости, и дополнительная защита от взлома, и безконсольный доступ к логам, и даже плагины.

Мое пожелание крупным российским компаниям поскорее становиться профессиональнее в вопросах автоматической отчетности, и внедрять такие opensource-решения.

DevOps Engineer Иннотех, , можно удалённо, По итогам собеседования tproger.ru Вакансии на tproger.ru

А если вы захотели прокачаться как дата-аналитик, рекомендую курс “Аналитика на Python”.
 
198 162Темы
635 133Сообщения
3 618 414Пользователи
drakkon12345Новый пользователь
Верх