Closed6
Apache Airflowのクイックスタートをやってみる
Running Airflow in Docker — Airflow Documentationを実行してみる。
実験環境
- MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
- プロセッサ:2.3 GHz クアッドコアIntel Core i7
Dockerコンテナ内の各種ソフトウェアの環境は後述。
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にクローズされました