【Apache Airflow 入門】Docker環境で動かしてみた!

最近、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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です