🐙

Airflow を始める人が最初に読む記事

2022/05/24に公開

はじめに

前提

目的

「Airflow 入門するにあたってドキュメント読むのめんどくさい。とにかくすぐ始めたい」という人がとにかくすぐ始めるのに最低限必要な作業がわかること。

インストール

クイックスタートには、Docker で試す場合とローカルにインストールしてしまう場合の 2 種類あるが、ローカルにインストールする方がよい。これはその後のチュートリアルに沿ってコードを真似てみる際に airflow の依存のインポートができずに補完も効かないためエディタの助けを借りながらでないと Python が書けない初学者に向かないからである。

インストールのページには以下と似たようなコマンド群が並んでいるが、これをシェルスクリプトとして実行できるように直してしまう(注: 後述の通り実行されるコマンドが若干違う)。

airflow-local-installer.sh
#!/bin/bash -eu

# Airflow needs a home. `~/airflow` is the default, but you can put it
# somewhere else if you prefer (optional)
export AIRFLOW_HOME=~/Work/personal/airflow

# Install Airflow using the constraints file
AIRFLOW_VERSION=2.3.0
PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
# For example: 3.7
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example: https://raw.githubusercontent.com/apache/airflow/constraints-2.3.0/constraints-3.7.txt
pip3 install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
# The Standalone command will initialise the database, make a user,
# and start all components for you.
airflow standalone

# Visit localhost:8080 in the browser and use the admin account details
# shown on the terminal to login.
# Enable the example_bash_operator dag in the home page

私のローカルマシンの Python のバージョンが 2 系で PATH が通っていて、PATH 直すの面倒だからスクリプトを直している。変更した箇所は次の通り。もちろん 3 系で通ってれば直す必要はない。

  • AIRFLOW_HOME: ~/airflow → ~/Work/personal/airflow
    • このディレクトリで試すつもりだったため
  • PYTHON_VERSION: python → python3
  • pip install ...: pip → pip3

これを、今回であれば ~/Work/personal/airflow で実行するといろいろファイルが作られる。

実行してみる

~/Work/personal/airflow の下に dags ディレクトリを切って、tutorial.py ファイルを作成する(ファイル名はなんでもよい)。チュートリアルに沿って進める。チュートリアルでは特に詰まったことはなかったので忘備録としてまとめることはない。

[Optional] やっぱり Docker で実行したい場合

Python はある程度書けるよ、Python のエラーと Airflow のエラー区別できるからローカルで実行できればいいよという人は Docker で環境構築してしまうのもいいかもしれない。

ドキュメント に沿って docker-compose.yaml ファイルを落としてきて環境構築すればいい。ドキュメント読むのもめんどくさければ Mac でやるなら以下で構築までできる(yaml 落としてくるのバージョンが古い可能性あるのでそこはドキュメントで確認する)。

airflow-docker-installer.sh
#!/bin/bash -eu

# Download docker-compose.yaml.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.0/docker-compose.yaml'
# Create directories to be mounted on the container.
mkdir ./{dags,logs,plugins}
# Getting rid of the warning that AIRFLOW_UID is not set.
echo AIRFLOW_UID=50000 > .env

# Database migrations and create the first user account.
docker-compose up aiflow-init
# Start all services.
docker-compose up

ローカルで作成した DAG を定義した py ファイルをどうやって Docker に読ませるかというと ./dags ディレクトがマウントされてるのでここに置けばよい(これに気付かず少々時間がかかった)。この状態で以下のようなコマンドを実行すれば DAG の一覧が見れたりする。

command
docker-compose run airflow-worker airflow dags list
#                                 ↑ ここから airflow のコマンド

上のコマンドは長すぎるので、./airflow.sh info みたく実行できるスクリプトも用意されるので使うのをおすすめする(ref. running-the-cli-commands)。

command
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.0/airflow.sh'
chmod +x airflow.sh

あとはドキュメントしっかり読んで DAG を作り込んでいくだけ!(結局ドキュメントは読む)

役に立ったら Like もお願いします!🐙

Discussion