Отличный инструмент автоматизации конвейера, который стоит изучить как специалист по данным

Что такое Apache Airflow?

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

Apache Airflow - это планировщик заданий с открытым исходным кодом, который может организовывать, выполнять и контролировать любой рабочий процесс в любой периодический интервал времени. Этот проект был запущен на Airbnb и был поддержан многими крупными компаниями, такими как Google и Amazon.

Как работает Airflow?

Airflow использует направленные ациклические графы (DAG) для создания рабочих мест.

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

Каждый узел в графе определяется оператором. Существует множество операторов, таких как BashOperator, PythonOperator и т. Д. Каждый оператор отвечает за выполнение функции этого типа оператора. Например, если у вас есть PythonOperator, вы можете указать оператору запустить функцию Python. Это список всех возможных операторов воздушного потока.

Каждая группа DAG указывается в файле Python DAG, в котором указаны узлы и зависимости между узлами.

Страница Airflow DAG

В представлении DAG вы можете увидеть все DAG, которые в настоящее время зарегистрированы в Airflow. Отсюда вы можете просматривать состояние заданий, запускать существующее задание, обновлять задание и многое другое.

Настройка Airflow

Настроить Airflow действительно просто. Этот процесс установки будет для MacOS, но есть соответствующие шаги по установке Windows в Интернете. Перед установкой убедитесь, что у вас установлен HomeBrew [инструкция]. HomeBrew - это установщик пакетов, который значительно упрощает установку программ и пакетов.

1. Установите Python3 и pip

Установите Python3, а затем убедитесь, что версия Python 3+.

% brew install python
% python --version
python 3.8.3

Установить пип

% curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
% python get-pip.py

Чтобы установить Airflow, убедитесь, что версия pip - 20.2.4.

% pip install --upgrade pip==20.2.4
% pip --version
pip 20.2.4 from /usr/local/anaconda3/lib/python3.8/site-packages/pip (python 3.8)

2. [Необязательно] Создайте виртуальную среду. Установите Airflow.

Как правило, установка виртуальной среды является хорошей практикой, поэтому вы не кластеризуете собственную среду с большим количеством пакетов. Виртуальную среду можно легко активировать и деактивировать. Установите virtualenv и создайте имя для виртуальной среды, имя в этом случае будет venv.

% pip install virtualenv
% virtualenv -p python venv

Теперь активируйте виртуальную среду, чтобы все пакеты устанавливались в виртуальную среду, а не на ваш компьютер.

% source venv/bin/activate

Теперь ваша виртуальная среда активирована. Теперь перед вашей консолью должно стоять (venv).

3. Установите и настройте Airflow.

Установите Airflow в новый каталог airflow

(venv) % mkdir airflow && cd airflow
(venv) % pip install apache-airflow

Настройте правильную структуру каталогов и создайте новую папку воздушного потока. Сначала получите путь к папке воздушного потока с помощью pwd, а затем экспортируйте его как домашний каталог воздушного потока по этому пути.

(venv) % pwd
/Users/<username>/airflow/airflow
(venv) % export AIRFLOW_HOME=/Users/<userid>/airflow/airflow

Наконец, инициализируйте базу данных Airflow. Airflow использует базу данных Sqlite для отслеживания метаданных для всех DAG-групп воздушного потока.

(venv) % airflow db init

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

(venv) % brew install tree
(venv) f.liang@fliang-ltm airflow % tree
.
├── airflow.cfg
├── airflow.db
├── logs
│   └── scheduler
│     ├── 2021-04-16
│     └── latest -> /Users/<userid>/airflow/logs/scheduler/2021-04-16
├── unittests.cfg
└── webserver_config.py

4. Воздушный поток при запуске

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

(venv) % airflow users create \
      --role Admin \
      --username admin \
      --email admin \
      --firstname admin \
      --lastname admin \
      --password admin

Чтобы проверить, успешно ли добавлен пользователь, перечислите всех пользователей

(venv) % airflow users list
id | username | email | first_name | last_name | roles
===+==========+=======+============+===========+======
1  | admin    | admin | admin      | admin     | Admin

Затем запустите планировщик заданий Airflow.

% airflow scheduler

Создайте новый терминал (CMD + T на Mac) и снова установите путь AIRFLOW_HOME. Не забудьте активировать виртуальную среду, если вы ранее настраивали виртуальную среду. В противном случае команды airflow не будут работать в новом терминале. Затем запустите веб-сервер.

(venv) % export AIRFLOW_HOME=/Users/<userid>/airflow/airflow
(venv) % airflow webserver

Отсюда все должно быть настроено, поэтому откройте любой веб-браузер и перейдите на localhost: 8080. 8080 должен быть портом по умолчанию в вашем airflow.cfg файле, но если это не сработает, откройте файл airflow.cfg, найдите поле web_server_port и сделайте его 8080. Отсюда просто введите имя пользователя и пароль, которые вы создали ранее (оба имени пользователя и пароль areadmin) и логин.

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

5. Создание собственных групп DAG.

Чтобы предотвратить отображение примеров DAG, откройте файл airflow.cfg и установите для load_examples значение False, а затем создайте папку dag, как указано в переменной dags_folder в airflow.cfg. Путь к папке с ошибками - AIRFLOW_HOME/dags.

(venv) % mkdir /Users/<userid>/airflow/airflow/dags

Добавьте файлы DAG в папку dags/, и планировщик Airflow автоматически подберет файлы DAG и отразит их на веб-сервере в течение нескольких минут. Любые ошибки компиляции также будут отображаться в пользовательском интерфейсе, а также в папке журналов.

Вывод

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