概要
Pythonのワークフロー管理ツールであるAirflowをローカルPCで立ち上げまで行う。
Airflowとは
はじめにAirflow とは何かを説明する。
正式名称: Apache Airflow
Airflowとは、Airbnbではじめ開発がスタートされた一連のタスクフローを管理できるOSSのPythonフレームワークである。
もとは、FaceBook社内で使われていたDataswarm(コード非公開)と呼ばれるワークフロー管理ツールの開発者、Maxime BeaucheminがAirbnbに移った後、開発を始めたソフトウェアであるためその時の名残が大きいようである。
各Taskは、Digというファイル内で記述され、一連のワークフローの依存関係もファイル内にPythonコードとして定義する。
OSS自体もPure Pythonで書かれている。
GUIツール上からワークフローの設定変更や実行など行え、比較的UIも洗練されている。
Python上で分岐処理の定義をしておけば、一連のフローをGUI上で確認することもできて便利。
フローをっコーディングで記述できるので拡張性が高い。
環境
環境 | バージョン |
---|---|
OS | macOS Mojave 10.14.6 |
Docker compose | 1.29.1 |
Airflow | 2.2.3 |
立ち上げの流れ
基本、公式ドキュメントからDockerでの実行方法をベースに立ち上げを行う。
気をつけるべきこと
Docker Desktop の設定から割当可能なMemoryを上げる。
デフォルトでは、2GBであるが、最低4GB, 推奨8GBまであげないとAirflowが立ち上がらない。
自分の場合は、12GBまで上げました。
以下はOSがLinuxのとき実行するとあるがmacOSにおいても実行しないと正常にDockerコンテナが立ち上がらない。
echo -e "AIRFLOW_UID=$(id -u)" > .env
ブラウザ上でアクセスする
http://localhost:8080/
所感
前処理や無数のパラメータ調整が必須で管理が煩雑になりがちな機械学習モデルの実験管理に役立ちそう。研究系のタスクがメインの方面でも使われそう。
機械学習系の現場の本番環境においても、実データを前処理してETLにデータを突っ込む一連の処理の流れをPythonベースで定義できるので重宝しそう。
Web開発の現場でもバッチ処理を諸々管理できるので、いろんな使いみちがありそう。
ローカルだと少し重め。問題あるレベルではないが。
これからより触って理解を深めていきたいところです。