とりゅふの森

GCPデータエンジニアとして生きる

Airflow Breezeを使い、Windows10上でAirflowを動かす

f:id:true-fly:20210728000501p:plain

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でサインインしましょう。
f:id:true-fly:20210718004242p:plain

こんなかんじで初期画面が表示されます。Ver2以降見たのは初めてですが、左上のアイコンをマウスオーバーするとくるくる周ってとってもかわいいです。
f:id:true-fly:20210718004257p:plain

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になっているので、有効化してみます。
f:id:true-fly:20210718004330p:plain

start_dateが前日以前で、catchup=Falseとなっているため、ONにしたらすぐに実行されます。
結果は以下の通り、Graph Viewで確認が可能です。
f:id:true-fly:20210718004352p:plain

まとめ

以上、Airflow Breezeを使って、Windows10でも簡単にAirflowの開発環境を構築することができました。
私の環境ではAirflowのVersionがまだ1系なので、2系の検証をするために早速この環境を活用していこうと思います。
機会があれば、Airflowの使い方、活用方法なども本ブログを通して紹介したいと思います。