最近、Kubeflowを使ってデータパイプラインを使用する機会が少しあり、データパイプラインに興味が湧いていきている今日この頃です。
Kubeflowのworkflow engineであるArgo workflowも触ってみたいのですが、まずはApache Airflowを触ることにしました。
そこで、今回は、入門編として、Docker環境を構築してみました。Airflowの管理画面を表示させるのがゴールです。
基本的に、公式ドキュメントのQuick Startガイドを元に進めました。
Quick Start(DockerでAirflowを動かす)
参考サイト
環境
- Docker Desktop : version 4.1.1
- Docker : version 20.10.8
- docker-compose : version 1.29.2
はじめる前の確認事項
Dockerのリソース(メモリ)を4G以上に設定すること
コンテナを複数立てるため、適切に動かすには結構メモリーがいるようです。
Docker DesktopのsettingからResourcesのメモリを設定します。デフォルトでは2GBなので、4GBにしましょう。MacOS上のDockerの場合は、最低4GBで、8GBが理想みたいです。
私の環境は、メモリ8GBのMacbook airなのでちょっときついです。。。
ちなみに、私の場合、4GBだと、メモリーが足りないとというエラーが発生したので、4.25GBに設定しました。
Docker Composeのversionは1.29.1以上であること
以下コマンドでバージョンを確認できます。私は1.29.2だったのでOKでした。
docker-compose version
docker-compose.yaml
私の場合、とりあえず、airflowというディレクトリを作成(mkdir airflow
)しました。
そのディレクトリ内で、AirflowをDocker Composeにデプロイするために、yamlファイルを取得します。
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.2/docker-compose.yaml'
`ls`コマンドで確認すると、yamlファイルがあるのがわかります。
このyamlファイルには以下サービスの定義が含まれているようです。
postgresとかredisも含まれているんですね。
環境準備
では、Airflowをはじめる前に、環境を準備していきましょう。必要なディレクトリを準備したり、データベースの初期化を行っていきます。
ディレクトリ作成
dags, logs, pluginsのディレクトリを作成します。
- ./dags : DAGのファイル置き場
- ./logs : task executionやschedulerのログ
- ./plugins : カスタムプラグインの置き場
コンテナ内のこれらディレクトリがマウントされます。つまり、これらディレクトリがローカルのPCとコンテナ間で同期されるということ、だそうです。
mkdir -p ./dags ./logs ./plugins
ユーザーIDの設定
公式ドキュメントでは、以下コマンドが書いています。
echo -e "AIRFLOW_UID=$(id -u)" > .env
グループID(group id)を0にセットする必要があるようなので、以下コマンドでOKみたいです。正直このあたりはよくわかりません。
echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
データベースの初期化
データマイグレーションをして、最初のユーザーアカウントを作成する必要があります。これらは以下コマンドでできます。
docker-compose up airflow-init
と〜げ
データマイグレーションとは、DBに保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能だそうです。よくわからん。。
すべて完了すると以下のメッセージが表示されます。
airflow-init_1 | Upgrades done
airflow-init_1 | Admin user airflow created
airflow-init_1 | 2.2.2
start_airflow-init_1 exited with code 0
Airflowの起動
すべてのサービスを起動します。
docker-compose up
ちょっと時間がかかります。
以下コマンドで走っているコンテナを確認します。
docker ps
http://localhost:8080 にアクセスすると、以下ログイン画面が表示されます。
username, password共に「airflow」です。
以下のように、Airflowの管理画面が表示されます。
これで、【Apache Airflow 入門】Docker環境で動かしてみた!は完了です。
次回は、Tutorialを進めていきたいと思っています!!
Udemyに、Apache Airflowの初心者向けの良さそうな講義がありました。興味ある方、どうぞ。
Apache Airflow: Complete Hands-On Beginner to Advanced Class