インストールガイドエアフロー[V1.10]タスクスケジューリングプラットフォーム

0.5背景

本当にかかわらず、コミュニティ活動やGithubの数がアズカバンEasySchedulerよりもはるかに優れているが、いなくても完全なインストールチュートリアルではなかった、なぜそれが、エアフローの星を把握することはできませんか?それは私のニーズには高すぎますか?本当に疲れた心は無限大です、検索エンジンだけでなく、フルユーチューブ何度も何度も私はしかし、幸いなことに、最終ピットの足跡のステップに良い環境がコミュニケーションや演算子を構築するために......満足に感じることはなかったです。まあ、騒ぎ、今日はエアフロー一部のインストールのチュートリアルを開始しました。

インストール作業の前に1.準備

  • インストールリリースノート
インストール用ツール 使用
パイソン 3.6.5 インストールの依存関係と気流は、気流がDAGを使用して開発されました
MySQLの 5.7 気流のメタデータベースとして
気流 1.10.0 タスクのスケジューリングプラットフォーム

きれいな物理ホストマシンまたはクラウドを選択してください。それ以外の場合は、余分なまたは結果に影響を与え、私は責任を負いません!

  • あなたがLinux環境と基本的な操作コマンドに精通していることを確認し、方法は、慣れていない場合は、再び完全に充電したまま移動してください、いくつかのPythonの基本的なコマンドになります

2.インストールのpython3

python3のインストールは、これはもはや青言われて、私の以前の記事を参照することはできません

3. MySQLをインストールします。

約3年前、また書いたMySQLのチュートリアルをインストールCentOSにしますが、実用的であるが、しかし、内容はここにあなたが既製使用する場合、我々は、もちろん(迅速MySQLユーザをインストールおよび構成する最も簡単な方法を使用し、長すぎるRDSことができますする必要がなくなり、インストールプロセスは、)データベースを構築するユーザーが構築されてエアフローステップにジャンプすることができます。

  • 古いルール、アンインストールmariadb
rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

sudo rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

rpm -qa | grep mariadb
复制代码
  • MySQLはレポソースをダウンロード
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
复制代码
  • RPMをインストールすることで、
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
复制代码
  • MySQLをインストールし、許可
sudo yum install mysql-server
sudo chown -R mysql:mysql /var/lib/mysql
复制代码
  • MySQLを起動します
sudo service mysqld start
复制代码

以下の操作は、あなたが最初にMySQLを接続し、ログインする必要があり、mysqlクライアント上で操作を行っています。

MySQLの接続には、rootユーザーとしてログオンします

mysql -uroot
复制代码
  • MySQLのパスワードのリセット
use mysql;

update user set password=password('root') where user='root';

flush privileges;
复制代码
  • エアフローは、ユーザーを構築、データベースを構築しています

データベースの構築:

create database airflow;
复制代码

内蔵のユーザー:

create user 'airflow'@'%' identified by 'airflow';

create user 'airflow'@'localhost' identified by 'airflow';
复制代码

承認されたユーザー:

grant all on airflow.* to 'airflow'@'%';

flush privileges;

exit;
复制代码

4.インストールのエアフロー

今、すべての場所にあることを、我々は今日のテーマに入るようになりました!

4.1基本

  • 1)気流足場によってPIPを搭載

一時的な環境変数をインストールする前に設定する必要性についてSLUGIFY_USES_TEXT_UNIDECODE次のように、それ以外の場合は、インストールが失敗する原因になります、コマンドは次のとおりです。

export SLUGIFY_USES_TEXT_UNIDECODE=yes
复制代码

インストール気流足場:

sudo pip install apache-airflow===1.10.0
复制代码

空気の流れが下のpython3 site-packagesディレクトリにインストールされる、完全なディレクトリは次のとおりです。${PYTHON_HOME}/lib/python3.6/site-packages/airflow私の気流ディレクトリには、次のように:

    1. フォーマルインストール気流

空気の流れをインストールする前に、我々はインストールディレクトリの気流の外観を設定する必要がありAIRFLOW_HOME、関連するコマンドの使用を容易にするために、そして空気の流れを、私たちは一度、すべての、環境変数の中に空気の流れを構成しました。

編集/etc/profileシステム環境変数ファイルを:

sudo vim /etc/profile
复制代码

(もちろん、ああコピーを移動しないでください、あなた自身のディレクトリに対応する特定のディレクトリに変更する必要があります)以下の変更を行います。

すぐに有効になりますように変更する環境変数:

sudo source /etc/profile
复制代码
  • 3)実行airflow初期操作を行うためのコマンドを

環境変数を通る空気流の設定があるのでSITE_AIRFLOW_HOME、我々は次のコマンドを実行できる場所:

airflow
复制代码

これは、空気の流れはちょうどになりますAIRFLOW_HOME生成されたファイルのディレクトリ。もちろん、コマンドが実行されたときに、いくつかのエラーが報告されることが、あなたは無視することはできません!以下のようにファイルのリストを生成すると、次のとおりです。

    1. エアフローモジュールは、MySQLがインストールされています
sudo pip install 'apache-airflow[mysql]'
复制代码

インストールパッケージの依存関係の空気の流れがこのようにインストールすることができ、具体的な言及は公式文書を気流


[フォーカスを描き、黒板にノック]

mysqlのモジュールをインストールすると、次のエラーが報告されることがあります。

mysql_config not found
复制代码

次のように解決します。

(1)ファイルを表示することがmysql_configをされているかどうか:

find / -name mysql_config
复制代码

(2)そうでない場合は、インストールのmysql-develの:

sudo yum install mysql-devel
复制代码

インストールが完了した後、(3)、再びそこにファイルmysql_configをことを確認します。


    1. データベースのMySQLのメタデータを使用してエアフロー

Airflow.cfgは気流元としてファイル、構成mysqlデータベースを変更します。


ここでは、非常に巨大な穴があり、多くの人がそう直接チュートリアルを書かされていない、そして台無しにされます!あなたはそれを試してみる、というようにダウンしたデータベースが死んでしまうの初期化に信じてはいけません!しかし、あなたの検索のための効果的なソリューション!第二に、何が変わっ信じていないpymysqlパッケージのpymysql実装と、そうでも悪いことに、あなたは見当がつかないので、データは、問題を解析するタイプがあるでしょう!覚えている忘れないでください!

sql_alchemy_conn = mysql://airflow:airflow@localhost:3306/airflow
复制代码

若しくは

sql_alchemy_conn = mysql+pymysql://airflow:airflow@localhost:3306/airflow
复制代码

可能ではないようので、どのようにそれを行うには?の問題よりも解決!python3のMySQLdbはもはやサポートされ、唯一のPython2がサポートされていますので。しかし、その後、唯一のMySQLdbは、最良の結果です。

まず、ピップはmysqlclientてそれをインストールします。

sudo pip install mysqlclient
复制代码

その後、ピップでそれはMySQLdbはインストールします。

sudo pip install MySQLdb
复制代码

最後に、我々はsql_alchemy_conn airflow.cfgの設定ファイルを変更します。

sql_alchemy_conn = mysql+mysqldb://airflow:airflow@localhost:3306/airflow
复制代码

これは、我々はデータベースメタデータ情報の空気の流れと準備ができて依存関係を設定しています。

    1. メタデータベースの初期化情報(実際には、新しい気流に依存テーブルです)
airflow initdb
复制代码

この時点で、私たちのメタmysqlデータベース(ライブラリという名前の気流は)良いエアフロー新しい依存関係のテーブルがあります。


[フォーカスを描き、黒板にノック]

この時点で、初期データベースで、次のエラーが報告されることがあります。

Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
复制代码

エアフローの公式文書では、この問題に対する解決策を説明している、リンクは次のとおりです。airflow.apache.org/faq.htmlMySQLは、次の手順を設定ファイルmy.cnfファイルを変更することによって処理する必要があります。

(1)のmy.cnf場所を探します:

mysql --help | grep my.cnf
复制代码

(2)my.cnfファイルを変更します。

[mysqldを](必ずしも間違った場所)の下に次の設定を追加します:

explicit_defaults_for_timestamp=true
复制代码

(3))を有効にするMySQLの設定を再起動するには:

sudo service mysqld restart
复制代码

(4)変更した設定を有効にするかどうかをチェックします。

(5)再実行airflow initdbします


    1. 基本的なコマンドの応用
    • 気流组件:Webサーバ、スケジューラ、労働者、花
    • 各コマンドの背景コンポーネントを起動します。airflow xxx -D
    • ダグリストを表示します。airflow list_dags
    • ダグは、タスクのリストを表示します。airflow list_tasks dag_id
    • ダグを再開/サスペンド:airflow pause/unpause dag_id
    • ダグ・タスクをテストします。airflow test dag_id task_id execution_date

[フォーカスを描き、黒板にノック]

あなたがウェブサーバコンポーネントを起動すると、次のエラーが報告されることがあります。

エラー1:

Error: 'python:airflow.www.gunicorn_config' doesn‘t exist
复制代码

にgunicornの指定されたバージョンをインストールします。

(1)Airflow1.10バージョンgunicornのバージョン19.4.0を対応します:

sudo pip install gunicorn==19.4.0
复制代码

gunicornの(2)Airflow1.8バージョン19.3.0インストールされたバージョン:

sudo pip install gunicorn==19.3.0
复制代码

エラー2:

FileNotFoundError: [Errno 2] No such file or directory: 'gunicorn': 'gunicorn'
复制代码

あなただけが(あなたも参照することができbinディレクトリにPythonの環境変数を設定する必要がありwww.cnblogs.com/lwglinux/p / ...を):

sudo vim /etc/profile
复制代码

source /etc/profile
复制代码

4.2高度な記事

    1. 知人エグゼキュータ(有効にするには再起動する必要があります)

なぜここでそれを修正するには?SequentialExecutorタスクは通常はテストのために使用される単一のプロセスシーケンス、既定のエグゼキュータを実行することであるため、LocalExecutorはCeleryExecutorは、DaskExecutorが使用されている(もちろん、スタンドアローンできる)、一般的に、本番環境で使用されるスケジューリングの使用を配布され、使用してローカルで実行マルチプロセス・タスクであります動的なタスクスケジューリングは、一般的にデータ分析に使用します。

  • 2)東8地区にタイムゾーンを変更する方法(有効にするには再起動する必要があります)

なぜあなたはタイムゾーンを変更したいのですか?エアフローのデフォルトの時間はGMT時間であるため、異なるタイムゾーンに位置エアフロークラスタで同じ時間を確保することができますが、時間の問題の同期がとれて表示されませんが、この時間は8時間早く、北京よりも、私たちの読書習慣と一致していません、シンプルで直感的な十分ではありません。最も我々の場合、我々はどちらかの単一ノードのサービスので、や拡張が同じ時間帯にもある場合でも、それは私たちが使用するためのより多くのである東8区、すなわち北京、時間帯を変更します。

いい加減にして!

(1)airflow.cfgファイルを変更します。

default_timezone = Asia/Shanghai
复制代码

ここでは修正されたスケジュールの時間スケジューラは、スケジュールされた時間の準備で北京に直接書き込むことができるということ、です。

(2)ページのWebサーバのショーの右上に時刻を変更します。

あなたは変更する必要がある${PATHON_HOME}/lib/python3.6/site-packages/airflow/www/templates/admin/master.htmlファイルを。

示されるように修飾された結果:

(3)WebサーバLASTRUN時間を変更します。

最初に変更され${PATHON_HOME}/lib/python3.6/site-packages/airflow/models.pyたファイルを。

def utc2local(self,utc):
       import time
       epoch = time.mktime(utc.timetuple())
       offset = datetime.fromtimestamp(epoch) - datetime.utcfromtimestamp(epoch)
       return utc + offset
复制代码

結果は以下の通りであります:

第二の変形で${PATHON_HOME}/lib/python3.6/site-packages/airflow/www/templates/airflow/dags.htmlファイル。

dag.utc2local(last_run.execution_date).strftime("%Y-%m-%d %H:%M")
dag.utc2local(last_run.start_date).strftime("%Y-%m-%d %H:%M")
复制代码

結果は以下の通りであります:

変更は、あなたはWebサーバを再起動することにより、効果を見ることができます!

    1. ユーザ認証を追加します

ここでは、使用し、単純なパスワード認証で十分です!

(1)インストールのパスワードコンポーネント:

sudo pip install apache-airflow[password]
复制代码

(2)設定ファイルairflow.cfgを変更します。

[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
复制代码

(3)ユーザーアカウントを追加するPythonスクリプトを記述します。

準備add_account.py書類:

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser

user = PasswordUser(models.User())
user.username = 'airflow'
user.email = '[email protected]'
user.password = 'airflow'

session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
复制代码

実行add_account.pyファイルを:

python add_account.py
复制代码

あなたは、MySQLユーザメタデータのデータベーステーブルがレコードのうち、よりになるでしょう。

もちろん、あなたはまた、視覚化UIのユーザーアカウントのサードパーティ製プラグインの手段としてだけでなく、することで、コードのDAGを変更/作成することができます。:へのリンクgithub.com/lattebank/a ...、しかしPython2.xにのみサポート。しかし、私は、アップグレードプロセスを実行するためにそれらに従います。

    1. Webサーバのアドレスを変更します(あなたを有効にするには再起動する必要があります)

    1. 新しいDAGの検出間隔を変更する方法(有効にするには再起動する必要があります)

スケジューラは、あまりにも頻繁にDAGを検出した場合、それは非常に高いCPU負荷につながることができます。デフォルトのスケジューラの検出時間は、つまり、何の時間間隔0ではありません。

Airflow.cfgあなたはファイルを変更することができmin_file_process_interval、次のように、私は5秒間検出のための時間を変更し、時間間隔を設定します:

    1. スケジューラスレッド同時実行制御の数を変更する方法(有効にするには再起動する必要があります)

Airflow.cfgファイルによって変更することができparallelism、同時スケジューラの量を制御します:

4.3高度な記事

    1. エアフロー分散クラスタ構成

(つづきます...)

ます。https://juejin.im/post/5d02a5bbe51d45778f076d26で再現

おすすめ

転載: blog.csdn.net/weixin_34306446/article/details/93167642