LoginSignup
1
0

More than 1 year has passed since last update.

Airflow資料抄訳(11):エグゼキューター(Executor)

Last updated at Posted at 2022-07-14

恥ずかしながら最近になって知ったワークフローエンジン Apache Airflow。日本語の紹介記事もちらほら出てきていますが、公式ドキュメントをちょっとずつ抄訳しながら読んでいこうと思います。

11回目の今回はエグゼキューター(Executor)。
バージョン2.3.3時点のものです。


エグゼキューター(Executor)

エグゼキューターはAirflowがタスク・インスタンスを実行する仕組みです。エグゼキューターには複数の種類がありそれらは共通のAPIとプラグイン機構を持っています。必要に応じてエグゼキューターを差し替えることができるということです。

同時に複数のエグゼキューターを使用することはできません。使用するエグゼキューターは構成ファイル[core]セクション内にあるexecutorオプションで指定します。

組み込みのエグゼキューターは名前で指定します。例えば次のように:

[core]
executor = KubernetesExecutor

カスタムメイドのエグゼキューターも指定することができます。その場合はフルパスで指定します:

[core]
executor = my_company.executors.MyCustomExecutor

Note
Airflowの構成(コンフィギュレーション)についてより詳しくは構成オプションの設定をご覧ください。

現在設定されているエグゼキューターが何かを確認したい場合は、 airflow config get-value core executorコマンドを使用します:

$ airflow config get-value core executor
SequentialExecutor

エグゼキューターの種類(Executor Types)

エグゼキューターには2つのグループがあります。1つ目はローカルで(schedularプロセスの内部で)タスクを実行するもので、2つ目はリモートで(一般にワーカー・プールで)タスクを実行するものです。AirflowはデフォルトではSequentialExecutor を使用する設定になっています。これはローカル・エグゼキューター群に属するもので、もっとも安全なタスク実行方法ですが、低スペックの、単一マシンでの稼動にはLocalExecutor を、そして複数マシンないしクラウド環境での稼動にはリモート・エグゼキューター群に属するいずれかを使用するのを強く推奨します。

ローカル・エグゼキューター

リモート・エグゼキューター

Note
Airflowにはじめて触れる方がよく混乱するのは、Airflowがタスクを実行するのに独立したexecutorプロセスは必要ないということです。これはエグゼキューターのロジックはschedularプロセスの内部で実行されるためです。スケジューラーを動かすということは、すなわちエグゼキューターを動かすということです。


このセクションを読んでみて、スケジューラーとエグゼキューターの違いがなんとなくわかりました。
「スケジューラーを動かすということは、すなわちエグゼキューターを動かすということ」という旨の記述があり、「だったらなぜ概念を分けるのか? 一緒でいいではないか」となりそうなところですが、それはまさにこのセクションで説明されているように、タスクの実行形態を柔軟に変更できるようにするためそうなっているわけです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0