この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
業務でAirflowを触る必要があり、まずは公式のQuick Startを動かしてみました。
Airflowのバージョンは 2.1.0
です。
初期設定
今回はDocker環境で動かしていきます。
まずは docker-compose.yml
ファイルを取得します。
$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.1.0/docker-compose.yaml'
次に、必要なディレクトリやファイルを作成します。
$ mkdir ./dags ./logs ./plugins
$ echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
下記コマンドを実行し、環境を構築します。
$ docker compose up airflow-init
次のように表示されれば成功です!
airflow-init_1 | Upgrades done
airflow-init_1 | Admin user airflow created
airflow-init_1 | 2.1.0
start_airflow-init_1 exited with code 0
起動する
下記コマンドで起動します。
$ docker-compose up
このとき、自分の環境ではメモリ不足でWebサーバーが落ちてしまいました。
airflow-quick-start_airflow-webserver_1 exited with code 137
こちらを参考に、Dockerの設定でメモリの割当を4GBにすることで、無事に起動できました。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c06fbf786de 16cccc028183 "/usr/bin/dumb-init …" 2 hours ago Up 2 hours (healthy) 8080/tcp airflow_sample_airflow-scheduler_1
e601c630414d 16cccc028183 "/usr/bin/dumb-init …" 2 hours ago Up 2 hours (healthy) 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp, 8080/tcp airflow_sample_flower_1
6f02639227ee 16cccc028183 "/usr/bin/dumb-init …" 2 hours ago Up 2 hours (healthy) 8080/tcp airflow_sample_airflow-worker_1
d46a5120352e 16cccc028183 "/usr/bin/dumb-init …" 2 hours ago Up 2 hours (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp airflow_sample_airflow-webserver_1
452a7e7576c0 bc8d70f9ef6c "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp airflow_sample_redis_1
ad50aef1cb20 293e4ed402ba "docker-entrypoint.s…" 2 hours ago Up 2 hours (healthy) 5432/tcp airflow_sample_postgres_1
管理画面の表示
http://localhost:8080にアクセスすることで、Airflowの管理画面を表示することができます。
初期状態のUsernameとPasswordは、どちらも airflow
となっています。
管理画面上からジョブの確認や実行が可能です。
CLIから実行
コマンドラインからジョブの実行などを行うこともできます。
各コマンドについては、こちらのドキュメント
にまとまっています。
試しに、 example_complex
のジョブのスケジュールを開始して、ついでに実行もしてみます。
$ docker-compose run airflow-worker airflow dags unpause example_complex # スケジュールを開始
$ docker-compose run airflow-worker airflow dags trigger example_complex # ジョブを実行
管理画面を確認すると、コマンドが反映されていることがわかります。
REST APIから実行
あまり試していませんが、REST APIからも実行できるようです。
$ curl -X GET --user "airflow:airflow" "http://localhost:8080/api/v1/pools"
{
"pools": [
{
"name": "default_pool",
"occupied_slots": 0,
"open_slots": 128,
"queued_slots": 0,
"running_slots": 0,
"slots": 128
}
],
"total_entries": 1
}
色々と便利そうなので、これからがっつり触っていきたいと思います!