Raspberry Pi 4 に Airflow をインストールする

 
やっと動いたのでメモ。

OS は Ubuntu Server 20.04 LTS に入れ替え済み。

何も考えずに Airflow の公式ドキュメントのとおりにインストールしたら、やれ pendulum がインストール出来ないやら pyarrow は PEP-517 がどうだのこうだのと言われてインストールがコケる。
PyYAML はもうインストールされてるから進めないとかいうエラーもあったな。
全部メモってない。

で、最終的にやった事はこちら。

 

libffi.so.6

libffi.so.6 が見つからないとか怒られるので libffi.so.7 のシンボリックリンク貼る。

sudo ln -s /usr/lib/aarch64-linux-gnu/libffi.so.7 /usr/lib/aarch64-linux-gnu/libffi.so.6

 

依存ツールのインストール

公式ドキュメントに書いてあったものと、ググった結果必要だったものをインストール。

sudo apt install -y --no-install-recommends \
        freetds-bin \
        krb5-user \
        ldap-utils \
        libsasl2-2 \
        libsasl2-modules \
        libssl1.1 \
        locales  \
        lsb-release \
        sasl2-bin \
        sqlite3 \
        unixodbc \
        python3 \
        python3-pip \
        python-dev \
        libatlas-base-dev

Python3関連

Python3関連のセットアップをする。

.bashrc に下記を追記

alias python=python3
alias pip=pip3

編集したら source コマンドで読み込み直す

で、このままインストールを始めても PEP-517 がどうだのこうだのと怒られるので、下記のコマンドを実行しておく。

pip install --upgrade pip setuptools wheel

 

Airflow 本体のインストール

やっと apahce-airflow のインストール
しかしここでもまた PyYAML が既にインストールされてるからどうのこうのとエラーが出るので無視して強制インストールw

AIRFLOW_VERSION=2.1.2
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"
sudo pip install --ignore-installed PyYAML "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

 

初期化と起動

インストールしてしまえばあとはこちらのもんだ (謎

以下の手順で初期化して起動。

export AIRFLOW_HOME=~/airflow

airflow db init
airflow users create \
    --username admin \
    --firstname hoge \
    --lastname fuga \
    --role Admin \
    --email hoge@example.com

airflow webserver --port 8080 -D
airflow scheduler -D

余計な事もやってしまってるかも知れんけど動いてるからおk

動くようになったら好きなパッケージを追加する。
俺は BigQuery 使うので GCP 用のパッケージを追加でインストールする。

sudo pip install apache-airflow-providers-google