Versionを指定したローカルPCへのAirflowのセットアップ手順
Versionを指定したローカルPCへのAirflowのセットアップのメモです。
ここでは、MWAA(Amazon Managed Workflows for Apache Airflow)の開発用に、
Python 3.7, Airflow 1.10.12 のversionの組み合わせで環境を作ります。
※2021年5月時点のMWAAで利用できる最新version
以下のセットアップ手順を参考にしています。
2.0系と1.10系のやり方を組み合わせる感じです。
Running Airflow locally | Apache Airflow
https://airflow.apache.org/docs/apache-airflow/2.0.2/start/local.html
Quick Start | Apache Airflow
https://airflow.apache.org/docs/apache-airflow/1.10.12/start.html
セットアップ
Python3.7で仮想環境を作ります。
以下の実行例はmacOSの場合です、
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
の部分は、
環境に合わせてPython3.7のパスに置き換えます。
mkdir airflow_tmp && cd $_
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m venv venv
source venv/bin/activate
Airflow1.10.12をインストールします。
export AIRFLOW_HOME=`pwd`
AIRFLOW_VERSION=1.10.12
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
データベースを初期化します。
airflow initdb
起動・終了用スクリプトの作成
起動用・終了用スクリプトを用意します。
以下のスクリプトを作ります。
start.sh
#!/bin/sh
PROJECT_DIR=$(cd $(dirname $0); pwd)
source $PROJECT_DIR/venv/bin/activate
export AIRFLOW_HOME=$PROJECT_DIR
if [ ! -f $AIRFLOW_HOME/AIRFLOW_SCHEDULER_PID ]; then
airflow scheduler > $AIRFLOW_HOME/scheduler.log 2>&1 &
echo $! > $AIRFLOW_HOME/AIRFLOW_SCHEDULER_PID
else
echo "scheduler is running"
fi
if [ ! -f $AIRFLOW_HOME/AIRFLOW_WEBSERVER_PID ]; then
airflow webserver > $AIRFLOW_HOME/webserver.log 2>&1 &
echo $! > $AIRFLOW_HOME/AIRFLOW_WEBSERVER_PID
else
echo "webserver is running"
fi
sleep 3
open http://localhost:8080/
stop.sh
#!/bin/sh
PROJECT_DIR=$(cd $(dirname $0); pwd)
export AIRFLOW_HOME=$PROJECT_DIR
if [ -f $AIRFLOW_HOME/AIRFLOW_SCHEDULER_PID ]; then
kill $(cat $AIRFLOW_HOME/AIRFLOW_SCHEDULER_PID)
rm $AIRFLOW_HOME/AIRFLOW_SCHEDULER_PID
fi
if [ -f $AIRFLOW_HOME/AIRFLOW_WEBSERVER_PID ]; then
kill $(cat $AIRFLOW_HOME/AIRFLOW_WEBSERVER_PID)
rm $AIRFLOW_HOME/AIRFLOW_WEBSERVER_PID
fi
実行権限をつけておきます。
chmod +x start.sh
chmod +x stop.sh
開始と終了
以下のコマンドで開始します。
./start.sh
次のコマンドで終了します。
./stop.sh
設定ファイルの変更
必要に応じて、airflow.cfgを変更します。
サンプルのdagが不要な場合は、load_examplesをFalseに、
Timezoneを日本標準時にする場合は、default_ui_timezoneをAsia/Tokyoに、
load_examples = False
default_ui_timezone = Asia/Tokyo
load_examplesをFalseに変更した後は、
以下のように、dbを作り直した方が混乱が無いと思います。
rm airflow.db
export AIRFLOW_HOME=`pwd`
source venv/bin/activate
airflow initdb
まとめ
Versionを指定してローカルPCにAirflow環境を作るポイントですが、
以下の2点になるかな、と思います。
- AIRFLOW_HOME を指定する
(指定しないと$HOME/airflowになって複数環境作った場合に混乱するので) pip install
する時に、constraintsを指定する
以上。