ちょっとした知識ポイント: Airflow の取り付けと展開

ここに画像の説明を挿入

インストール方法の一部参考Linux仮想マシン:ビッグデータクラスタ基本環境構築(Hadoop、Spark、Flink、Hive、Zookeeper、Kafka、Nginx)

1.Pythonのインストール

現在インストールされているバージョンは Python-3.9 で、ソース パッケージを使用してインストールします。

  • ソースパッケージのダウンロードまたはwgetのダウンロード
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
  • 指定したディレクトリに解凍します
tar -zxvf Python-3.9.6.tgz
  • インストール環境による
sudo yum -y install vim unzip net-tools && sudo yum -y install wget && sudo yum -y install bzip2 && sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel && sudo yum -y install libglvnd-glx && sudo yum -y install gcc gcc-c++
  • 事前設定された
cd Python-3.9.6
./configure --prefix=/xxx/program/python3
  • コンパイルしてインストールする
make && make install
  • 環境変数を構成するか、Python3 ソフト リンクを /usr/bin に配置します。
sudo ln -s /xx/xx/python3.9 /usr/bin/python3.9
sudo ln -s /xx/xx/pip3.9 /usr/bin/pip3.9

2. エアフローの取り付け

  • ピップを更新する
pip3.9 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • 更新 setuptools
pip3.9 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • ダウンロードエアフロー
pip3.9 install apache-airflow -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

ここに画像の説明を挿入

  • エアフロー環境コマンドを構成する
sudo ln -s /xxx/python-3.9.6/bin/airflow /usr/bin/airflow

3. エアフロー構成

ここでは docker でインストールした mysql5.7 を使用しています 詳細については、「 Linux 仮想マシン: ビッグ データ クラスターの基本環境の構築 (Hadoop、Spark、Flink、Hive、Zookeeper、Kafka、Nginx)」
公式ドキュメント:セットアップを参照してください。 MySQL データベース

  • 接続ドライバーをダウンロードする
pip3.9 install mysql-connector-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • airflow.cfg ファイルを変更する
    • このファイルは、対応するユーザーのホーム ディレクトリ、つまり ~/airflow/airflow.cfg にあります。
    • [database] モジュールを見つけて、前の sqlite をコメントアウトし、新しい mysql 設定を追加します。
sql_alchemy_conn = mysql+mysqlconnector://root:123456@hybrid03:3306/airflow_db

ここに画像の説明を挿入

  • MySQLデータベースを作成する
create database airflow_db character set utf8mb4 collate utf8mb4_unicode_ci;
  • 構成ファイル my.cnf を変更します。
    • docker によってインストールされた mysql5.7 の My.cnf は /etc/my.cnf にあり、マウントされた構成フォルダーにコピーし、ホスト マシンを介して変更し、元のフォルダーを上書きできます (vi/vim はありません) Docker コンテナ)
    • my.cnf [mysqld] に次の設定を追加し、変更後に mysql を再起動します (docker restart mysql)
explicit_defaults_for_timestamp=1
  • エアフローDBの初期化
airflow db init
  • ローカルスケジューラを変更する
    • airflow.cfg を変更し、元の設定をコメントアウトして、executor = LocalExecutor に変更します。

ここに画像の説明を挿入

  • ユーザーを作成
airflow users create --username admin --firstname admin --lastname admin --role Admin --email [email protected]
  • 起動
airflow webserver -p 8080 -D
airflow scheduler -D
  • ストップ
ps -ef | egrep 'scheduler|airflow-webserver'| grep -v grep | awk '{print $2}' | xargs kill -15

4. 既存ピット

  • ダウンロードした airflow コマンドは、Python インストール ディレクトリの bin ディレクトリにあります。環境変数が設定されていない場合は、そのようなコマンドは存在しないものとみなされます。
  • 当初setuptoolsが更新されておらず、所々でerror:subprocess-exited-with-errorが報告されましたが、その後setuptoolsを更新したところスムーズにインストールされました。
Collecting unicodecsv>=0.14.1
  Downloading http://pypi.doubanio.com/packages/6f/a4/691ab63b17505a26096608cc309960b5a6bdf39e4ba1a793d5f9b1a53270/unicodecsv-0.14.1.tar.gz (10 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [1 lines of output]
      ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

ここに画像の説明を挿入

  • airflow コマンドを使用してエラーを報告する: airflow.Exceptions.AirflowConfigException: エラー: sqlite C ライブラリのバージョンが古すぎます (< 3.15.0)
    • Airflow はデフォルトで sqlite をデータベースとして使用します。システムのデフォルトのバージョンは低すぎます。このデータベースを使用したい場合は、手動で更新する必要があります。通常は、MySQL に変更することをお勧めします。

ここに画像の説明を挿入

  • sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1067 (42000): 'updated_at' のデフォルト値が無効です
    • 理由: フィールド「update_at」はタイムスタンプ型であり、デフォルト値は null であるため、失敗します。
    • MySQL my.cnf を変更します。上記の手順を参照してください。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/baidu_40468340/article/details/128920523