Медленно, муторно, небезопасно: что не так с запуском Apache AirFlow в интерактивной среде Google Colab и можно ли с этим смириться. Разбираем на личном опыте.
Трудности работы с Apache AirFlow в среде Google Colab
О том, что можно настроить AirFlow в Google Cloud Platform, и запускать DAG-файлы из Colab, используя удаленный исполнитель, я подробно рассказывала здесь и здесь. Это довольно интересный опыт, который позволяет познакомиться с самым популярным пакетным ETL-фреймворком без его установки на личный компьютер или доступа к платной serverless-платформе, например, Amazon MWAA (Amazon Managed Workflows for Apache Airflow).
Однако, при эксплуатации Apache AirFlow в Google Colab я столкнулась с рядом неудобств. Прежде всего, очень низкая скорость работы. Например, выполнение даже такой простой задачи, как вывод текущей даты, в веб-GUI занимало около пары секунд. А DAG из 5 операторов без обращения к внешним системам выполнялся примерно 20 секунд, что очень долго. Возможно, это связано с тем, что при использовании Colab веб-сервер AirFlow запускается на удаленной машине. И, чтобы получить доступ к веб-интерфейсу фреймворка, я прокидывала туннель, который делает локальный хост доступным извне, с помощью утилиты ngrok. Она позволяет открыть доступ к внутренним ресурсам машины, на которой он запущен, из внешней сети путем создания публичного URL-адреса, все запросы на который будут переброшены на локальный адрес и заданный порт удаленной машины.
Второй недостаток, который хочется отметить – это большое число операций, которые следует выполнить вручную. Хотя установка библиотек и импорт модулей выполняются в коде, пришлось разбираться с директориями, например, определяя директорию для хранения DAG и копируя туда файл пакетного конвейера. Хотя сохранение DAG в виде py-файла в нужную директорию можно сделать прямо из ячейки Colab, также как его удаление/обновление, придется постоянно перезапускать эти ячейки или выполнять данные операции вручную при отладке и изменении конвейера.
Третья неожиданность, с которой столкнется пользователь Apache AirFlow, запуская его в среде Google Colab, это отсутствие возможности создать свой тип соединения в GUI. Впрочем, это решается с помощью кода, как я показывала здесь на примере добавления соединения с Телеграм. Однако, добавление своих соединений напрямую влечет следующую проблему, связанную с нарушением безопасности. В частности, приходится отправлять учетные данные в сторонний сервис. Например, чтобы какая-нибудь задача DAG или весь конвейер по его завершении отправляли данные на электронную почту, придется указать логин, пароль, адрес SMTP или POP3-сервера, а также порт. Аналогичным образом потребуется указать учетные данные дя подключения к другой внешней системе, например, чтобы реализовать полноценный ETL-конвейер, собирающий данные из источника и загружающий преобразованную информацию в какой-либо приемник.
Однако, несмотря на отмеченные недостатки, в заключение подчеркну еще раз, что запуск Apache AirFlow в среде Google Colab является отличной возможностью для начинающих дата-инженеров вручную познакомиться с этим ETL-инструментом без его развертывания на собственном компьютере или на облачном сервере. Кроме того, такой вариант использования может пригодиться в случае необходимости быстро проверить какую-то гипотезу или продемонстрировать жизнеспособность концепции. Поэтому рекомендую попробовать. Только не забудьте про необходимость тунелирования, поскольку веб-сервер AirFlow в Colab запускается на удаленной машине, к порту 8080 или 8888 которой нужно получить доступ, чтобы работать с веб-интерфейсом ETL-фреймворка. Например, записать порцию данных в PostgreSQL, не нарушив ограничений уникальности первичного ключа, что я разбираю в новой статье. Также можно запускать AirFlow на локальной машине, используя виртуальные Python-среды или docker-контейнер, о чем я рассказываю здесь.
Узнайте больше про использование Apache AirFlow для дата-инженерии и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве: