helloworlds

not a noun, it's a verb

【Airflow】入門 part.1 - 番外編 CeleryとFlower

概要

前回の記事で、起動が確認できました↓

o21o21.hatenablog.jp

Airflowの起動に合わせて、Flowerというダッシュボードも起動しています。

Flowerとは?

Flowerとは、タスクやワーカー数の調整などを行うWebベースのツールです。

Flowerのgithubは、ココ

Celeryとは?

Celery(セロリ) という、Python製でタスクキューベースの分散処理フレームワークのこと。 worker daemonを待機させてasync処理の仕組みを作ったり、beat daemonを起動して定時バッチ処理を組んだりすることが可能。

Celery公式ドキュメントは、ココ

Flower+Celeryの実現で、redisをDockerファイルに定義してインストールしていたことになる。

docker-compose-CeleryExecutor.ymlを配置

docker-compose-CeleryExecutor.ymlというファイルを任意のディレクトリに配置します。

## 例
$ mkdir test-airflow
$ mv docker-compose-CeleryExecutor.yml ~/test-airflow/

コンテナの構築・起動

docker-compose-CeleryExecutor.ymlを配置したディレクトリで以下を実行。

$ docker-compose -f docker-compose-CeleryExecutor.yml up -d

以下にように、doneと表示されればおk。

Creating network "test_20200415_default" with the default driver
Pulling redis (redis:5.0.5)...
5.0.5: Pulling from library/redis
b8f262c62ec6: Pull complete
93789b5343a5: Pull complete
49cdbb315637: Pull complete
2c1ff453e5c9: Pull complete
9341ee0a5d4a: Pull complete
770829e1df34: Pull complete
Digest: sha256:5dcccb533dc0deacce4a02fe9035134576368452db0b4323b98a4b2ba2d3b302
Status: Downloaded newer image for redis:5.0.5
Pulling postgres (postgres:9.6)...
9.6: Pulling from library/postgres
48839397421a: Pull complete
0cf8a1bc2b87: Pull complete
73498a4e88b3: Pull complete
497c518cf27d: Pull complete
67fdd1391d2e: Pull complete
eced13f1b460: Pull complete
d5a83883f95d: Pull complete
5a290fef01b8: Pull complete
60611a60649a: Pull complete
ab7b2445b4d1: Pull complete
a609de04bec9: Pull complete
0544058c2b5d: Pull complete
facb5fc91659: Pull complete
cefa49d68ba7: Pull complete
Digest: sha256:df815e77bcd2da9fa1835a751eadaaccfa0c8ebbe92605a5566a5a2d20950afa
Status: Downloaded newer image for postgres:9.6
Pulling webserver (puckel/docker-airflow:1.10.9)...
1.10.9: Pulling from puckel/docker-airflow
bc51dd8edc1b: Pull complete
dc4aa7361f66: Pull complete
5f346cb9ea74: Pull complete
a4f1efa8e0e8: Pull complete
7e4812fc693b: Pull complete
ff8fd055a548: Pull complete
c9215f8e7f2f: Pull complete
cab2fe472084: Pull complete
1f03789c1e57: Pull complete
Digest: sha256:30e7cb9744ad367c54ae30a379fa46c9df4ea582bf2fcb96604adfc2760be79a
Status: Downloaded newer image for puckel/docker-airflow:1.10.9
Creating test_20200415_redis_1    ... done
Creating test_20200415_postgres_1 ... done
Creating test_20200415_flower_1    ... done
Creating test_20200415_webserver_1 ... done
Creating test_20200415_scheduler_1 ... done
Creating test_20200415_worker_1    ... done

dockerのimageとコンテナを確認

$ docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
postgres                9.6                 6c8b19735285        2 weeks ago         200MB
puckel/docker-airflow   1.10.9              3e408baf20fe        2 months ago        797MB
redis                   5.0.5               63130206b0fa        7 months ago        98.2MB
$ docker ps 

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                    PORTS                                        NAMES
95f0df46cbc4        puckel/docker-airflow:1.10.9   "/entrypoint.sh work…"   39 seconds ago      Up 39 seconds             5555/tcp, 8080/tcp, 8793/tcp                 test_20200415_worker_1
a75fc01c3f42        puckel/docker-airflow:1.10.9   "/entrypoint.sh sche…"   40 seconds ago      Up 39 seconds             5555/tcp, 8080/tcp, 8793/tcp                 test_20200415_scheduler_1
9f8818470c01        puckel/docker-airflow:1.10.9   "/entrypoint.sh flow…"   40 seconds ago      Up 40 seconds             8080/tcp, 0.0.0.0:5555->5555/tcp, 8793/tcp   test_20200415_flower_1
63a2161a9817        puckel/docker-airflow:1.10.9   "/entrypoint.sh webs…"   40 seconds ago      Up 40 seconds (healthy)   5555/tcp, 8793/tcp, 0.0.0.0:8080->8080/tcp   test_20200415_webserver_1
067ae0133033        redis:5.0.5                    "docker-entrypoint.s…"   41 seconds ago      Up 40 seconds             6379/tcp                                     test_20200415_redis_1
35dc9542f790        postgres:9.6                   "docker-entrypoint.s…"   41 seconds ago      Up 40 seconds             5432/tcp                                     test_20200415_postgres_1

postgresのヴァージョン指定などをしたい場合は、さきほど配置したdocker-compose-CeleryExecutor.ymlの中身を編集することで、ヴァージョンの指定が可能だと思います。

ここまで確認できたら、一旦ブラウザでもUIが表示されるか確認します。

ダッシュボードの確認

http://localhost:5555/

起動できたら、↑上記にアクセスすると Flowerのダッシュボードが観覧可能です。

<project_name>/
├── dags                        ## ← ここにDAGを定義するファイルを作成していく
└── docker-compose-CeleryExecutor.yml