Apache Airflow、Pythonで定義できるワークフローエンジン、使ってますか?
私はGoogle Cloud PlatformのCloud Composerを利用しているのですが、
毎回GCS上にアップロードして確認するのがなかなか手間で……ローカルでの動作確認環境もちゃんと構築したいと悩んでいました。
そんなさなか、公式が「Airflow Breeze」という、ローカルでの環境を提供してくれていることを最近知りました。
github.com
Docker Composeで環境が実行できるみたいです。
今回は、このAirflow Breezeを使って、Windows10上でAirflowの開発環境を構築してみようと思います!
- コンテナ、Python、Linuxの操作の知識があること
- Airflow開発の経験があること
を前提にまとめています。
環境構築
動作確認環境
- OS: Windows 10
- CPU: AMD Ryzen 5 3600
- RAM: 32GB
上記Windows環境でWSL Ubuntu20.04上でDocker Composeを使います。
Windows事前準備
WindowsマシンHyper-V を有効化 以下を参考に有効化。 docs.microsoft.com
Docker Windowsインストール
以下に従いインストール docs.docker.jp
WSL 2、Ubuntu20.04インストール
以下の手順を参考にWSL 2インストール www.pc-koubou.jp
UbuntuにDocker、Docker Composeをインストール
$ sudo apt-get update ## Dockerインストール $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo -E add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ sudo apt-get install -y docker-ce ## Docker Composerインストール $ sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ## dockerグループにユーザ追加 $ sudo gpasswd -a $USER docker $ exit
再度Ubuntuに接続、sudoなしでコマンド実行ができることを確認する。
$ docker --version Docker version 18.02.0-ce, build fc4de44 $ docker-compose --version docker-compose version 1.29.2, build 5becea4c
Ubuntuのgitの設定
gitはインストール済みなので、もろもろ初期設定しておきましょう。
Ubuntuに他必要なコマンドのインストール
sudo apt-get install -y jq
Airflow Breezeの初回実行
breezeを実行。初回インストールをしてくれます。
$ mkdir ~/.docker $ touch ~/.docker/config.json $ git clone git@github.com:apache/airflow.git $ cd airflow/ $ ./breeze
もろもろ実行が終わると、コンテナの中に入った状態で終わるので、一回exitして、
以下のコマンドでAirflowを開始しましょう。
$ ./breeze start-airflow
しばらくするとターミナルが勝手に4分割され、Airflowが起動します。
localhost:28080にアクセス。サインインが求められるので、admin/adminでサインインしましょう。
こんなかんじで初期画面が表示されます。Ver2以降見たのは初めてですが、左上のアイコンをマウスオーバーするとくるくる周ってとってもかわいいです。
DAGを作成してみる
DAGを置くディレクトリですが、git cloneしてできた、airflowディレクトリ配下の、files/dagsになります。
このディレクトリが、Dockerコンテナの、/files/dagsとマウントしています。
ここにDAGファイルをfiles/dags/hello_truefly.py
という名前で作成してみます。
from datetime import datetime from airflow.models import DAG from airflow.operators.python_operator import PythonOperator default_dag_args = { 'start_date': datetime(2021, 7, 1, 0, 0, 0), } with DAG( dag_id='hello_truefly', schedule_interval='0 21 * * *', default_args=default_dag_args, catchup=False) as dag: def hello(name): print('Hello, {}!'.format(name)) t1 = PythonOperator( task_id='hello_airflow', python_callable=hello, op_kwargs={'name': 'Airflow'}) t2 = PythonOperator( task_id='hello_breeze', python_callable=hello, op_kwargs={'name': 'breeze'}) t3 = PythonOperator( task_id='hello_truefly', python_callable=hello, op_kwargs={'name': 'truefly'}) [t1, t2] >> t3
無事作成されました。アップロード時点ではDAGはPauseになっているので、有効化してみます。
start_dateが前日以前で、catchup=False
となっているため、ONにしたらすぐに実行されます。
結果は以下の通り、Graph Viewで確認が可能です。
まとめ
以上、Airflow Breezeを使って、Windows10でも簡単にAirflowの開発環境を構築することができました。
私の環境ではAirflowのVersionがまだ1系なので、2系の検証をするために早速この環境を活用していこうと思います。
機会があれば、Airflowの使い方、活用方法なども本ブログを通して紹介したいと思います。