Closed6

Apache Airflowのクイックスタートをやってみる

栗林健太郎栗林健太郎

Airflowの準備

docker-compose.ymlを取得する。

$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.0.1/docker-compose.yaml'

初期化する。

$ docker compose up airflow-init

(省略)

start_airflow-init_1 exited with code 0

最終的にstart_airflow-init_1 exited with code 0で終了したのでOKみたい。これでairflowのアカウントがuser: airflow、password: airflowで作られる。

栗林健太郎栗林健太郎

動かしてみる

$ docker compose up

どうもWebサーバが落ちちゃうみたい。

airflow-quick-start_airflow-webserver_1 exited with code 137

Dockerに割り当ててるメモリが足りないみたいなので(参照)メモリを増やした(2GB→4GB)。

今度はちゃんと動いてるっぽい。

CONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS                        PORTS                              NAMES
944bf33c56f6   apache/airflow:2.0.1   "/usr/bin/dumb-init …"   About a minute ago   Up 56 seconds (healthy)       0.0.0.0:5555->5555/tcp, 8080/tcp   airflow-quick-start_flower_1
31ebe58f0ce8   apache/airflow:2.0.1   "/usr/bin/dumb-init …"   About a minute ago   Up 58 seconds                 8080/tcp                           airflow-quick-start_airflow-scheduler_1
9aac90e58793   apache/airflow:2.0.1   "/usr/bin/dumb-init …"   About a minute ago   Up 58 seconds                 8080/tcp                           airflow-quick-start_airflow-worker_1
5506d594c661   apache/airflow:2.0.1   "/usr/bin/dumb-init …"   About a minute ago   Up 55 seconds (healthy)       0.0.0.0:8080->8080/tcp             airflow-quick-start_airflow-webserver_1
67c302417dd9   redis:latest           "docker-entrypoint.s…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:6379->6379/tcp             airflow-quick-start_redis_1
951578f18399   postgres:13            "docker-entrypoint.s…"   About a minute ago   Up About a minute (healthy)   5432/tcp                           airflow-quick-start_postgres_1
栗林健太郎栗林健太郎

CLI経由で触ってみる

実行環境が表示される。

$ docker compose run airflow-worker airflow info
[+] Running 2/0
 ⠿ Container airflow-quick-start_redis_1     Running                                 0.0s
 ⠿ Container airflow-quick-start_postgres_1  Running                                 0.0s
BACKEND=postgresql+psycopg2
DB_HOST=postgres
DB_PORT=5432

Apache Airflow: 2.0.1

System info
 | Linux
 | x86_64
 | uname_result(system='Linux', node='37da682518bd', release='5.10.25-linuxkit',
 | version='#1 SMP Tue Mar 23 09:27:39 UTC 2021', machine='x86_64', processor=''
 | ('en_US', 'UTF-8')
 | 3.6.12 (default, Feb  9 2021, 09:29:00)  [GCC 8.3.0]
 | /usr/local/bin/python

Tools info
 | NOT AVAILABLE
 | OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d  10 Sep 2019
 | NOT AVAILABLE
 | NOT AVAILABLE
 | NOT AVAILABLE
 | mysql  Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
 | 3.27.2 2019-02-25 16:06:06
 | bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1
 | psql (PostgreSQL) 11.10 (Debian 11.10-0+deb10u1)

Paths info
 | /opt/airflow
 | /home/airflow/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/s
 | in:/usr/bin:/sbin:/bin
 | /home/airflow/.local/bin:/usr/local/lib/python36.zip:/usr/local/lib/python3.6
 | /usr/local/lib/python3.6/lib-dynload:/home/airflow/.local/lib/python3.6/site-
 | ackages:/usr/local/lib/python3.6/site-packages:/opt/airflow/dags:/opt/airflow
 | config:/opt/airflow/plugins
 | True

Config info
 | CeleryExecutor
 | airflow.utils.log.file_task_handler.FileTaskHandler
 | postgresql+psycopg2://airflow:airflow@postgres/airflow
 | /opt/airflow/dags
 | /opt/airflow/plugins
 | /opt/airflow/logs

Providers info
 | 1.1.0
 | 1.0.1
 | 1.0.1
 | 1.0.1
 | 1.0.1
 | 1.0.1
 | 1.0.0
 | 1.0.1
 | 1.0.1
 | 1.1.0
 | 1.0.1
 | 1.1.0
 | 1.0.1
 | 1.0.1
 | 1.0.1
 | 1.0.1
 | 1.1.0
 | 2.0.0
 | 1.0.1
 | 1.1.0

便利スクリプト(実態は、↑で実行したコマンドのようなものを楽に実行するためのラッパースクリプト)が用意されているので、使ってみる。

$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.0.1/airflow.sh'
$ chmod +x airflow.sh
$ ./airflow.sh info

上記と同じ結果が表示される。

栗林健太郎栗林健太郎

REST API経由で触ってみる

$ ENDPOINT_URL="http://localhost:8080/"
$ curl -X GET  \
    --user "airflow:airflow" \
    "${ENDPOINT_URL}/api/v1/pools"
{
  "detail": null,
  "status": 401,
  "title": "Unauthorized",
  "type": "https://airflow.apache.org/docs/2.0.1/stable-rest-api-ref.html#section/Errors/Unauthenticated"
}

あれ、401が返ってくるなあ……。

このスクラップは2021/05/07にクローズされました