Apache Airflow をローカル環境にインストールする
ローカル環境に Airflow をインストールします。
環境
Poetry で管理できれば、と思いましたが、未サポートとのことです。だとしても利用できないことないだろ、と思って少し試してみたのですが、すごく面倒そうだったので、素直に pip 経由でインストールしています。
While there are some successes with using other tools like
poetry
orpip-tools
, they do not share the same workflow aspip
- especially when it comes to constraint vs. requirements management. Installing viaPoetry
orpip-tools
is not currently supported. If you wish to install airflow using those tools you should use the constraints and convert them to appropriate format and workflow that your tool requires.
pyenv のインストールと利用 Python バージョンのインストール
公式の Docker イメージが Python 3.7 で作成されており、そのイメージに合わせるため、Python 3.7 を pyenv 経由でインストールします。
https://github.com/apache/airflow/blob/main/Dockerfile
pyenv のインストール。
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile $ pyenv --version pyenv 2.3.1-20-g572a8bcf
pyenv: install: Basic GitHub Checkout
Python 3.7 のインストール。
$ pyenv install 3.7.13 $ pyenv versions * system (set by /home/zunda/.pyenv/version) 3.7.13
pyenv 経由の Python インストール(というかコンパイル)時、いろいろライブラリが足りないと怒られたので、Github の トラブルシューティング・ページにあった下記のライブラリインストールを行っています。
$ sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenv will try its best to download and compile the wanted Python version, but sometimes compilation fails because of unmet system dependencies, or compilation succeeds but the new Python version exhibits weird failures at runtime. The following instructions are our recommendations for a sane build environment.
pyenv: Troubleshooting/FAQ: Suggested build environment
Airflow を管理するプロジェクトフォルダを作成し、Python 3.7.13 を利用するよう pyenv に設定。
$ mkdir ~/work/airflow $ cd ~/work/airflow $ pyenv local 3.7.13 $ python --version Python 3.7.13
Python 仮想環境の作成
venv を利用して、Airflow 用の Python 仮想環境を作成。
$ cd ~/work/airflow $ python -m venv venv-airflow $ source venv-airflow/bin/activate (venv-airflow) zunda@LAPTOP:~/work/airflow$
Airflow のインストール
事前に pip のアッググレード。
(venv-airflow) $ python -m pip install --upgrade pip
Airflow のインストール。
(venv-airflow) $ cd ~/work/airflow (venv-airflow) $ AIRFLOW_VERSION=2.3.2 (venv-airflow) $ PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)" (venv-airflow) $ CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" (venv-airflow) $ pip install "apache-airflow[async,postgres,google]==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" (venv-airflow) $ airflow version 2.3.2
Installing Airflow with extras and providers
requirements.txt
を残しておく。
(venv-airflow) $ pip freeze > ~/work/airflow/requirements.txt
Airflow の起動
以下のコマンドで起動してくれます。環境変数 AIRFLOW_HOME
でパスを指定すると、起動する Airflow のルートディレクトリを変更できます(デフォルトではユーザーディレクトリの下に作成される)。
(venv-airflow) $ echo 'export AIRFLOW_HOME="~/work/airflow"' >> ~/.bash_profile (venv-airflow) $ source ~/.bash_profile (venv-airflow) $ (venv-airflow) $ airflow standalone
だだだーと表示されるログの中に、ログインユーザー名とパスワードもまじっています。
... standalone | standalone | Airflow is ready standalone | Login with username: admin password: GZYVYqNmBVff4dng standalone | Airflow Standalone is for development purposes only. Do not use this in production! standalone | ...
ブラウザで http://localhost:8080/
にアクセス、上記のログ上で表示されていたログインユーザー名とパスワードでログインできます。