0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Airflow資料抄訳(12):ローカル・エグゼキューター(Local Executor)

Last updated at Posted at 2022-07-14

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

12回目の今回はローカル・エグゼキューター(Local Executor)。
バージョン2.3.3時点のものです。


ローカル・エグゼキューター(Local Executor)

LocalExecutor はさまざまモードでプロセスを生成しタスクを実行するエグゼキューターです。

親クラスのBaseExecutorは生起するプロセスの数の上限を定めるパラメーターparallelismを受け取ることができます。このパラメーターに0が設定されている場合、LocalExecutorは無制限にプロセスを生起することができます。

次のストラテジーが利用可能です:

  • 無制限の並列度self.parallelism == 0):このストラテジーにおいては、エグゼキューターはexecute_async が呼び出される都度新たなプロセスを生起します。LocalExecutor に送信されたタスクはすべて専用のプロセスで実行されるということです。ひとたびタスクが実行され結果がresult_queueに格納されると、プロセスは終了します。このアプローチにおいてtask_queueは不要です。なぜならタスクには速やかに新しいプロセスがあてがわれるからです。このストラテジーにおいてプロセスはクラスLocalWorkerを利用します。
  • 制限された並列度self.parallelism > 0):このストラテジーにおいては、プロセス数はstart時点で指定されたself.parallelismの値と等しくなります。タスクを受け取り、その処理をワーカー群に分配するために、task_queueを利用します。ワーカーは準備ができ次第速やかにタスクを処理し始めます。LocalExecutorの生存期間にわたってワーカー・プロセス群はタスクを処理したり待機したりします。LocalExecutorは停止命令を受け取ると、ワーカー群を停止します。このストラテジーにおいてプロセスはクラスQueuedLocalWorkerを利用します。

細かな違いに目を瞑れば、SequentialExecutorは並列度を1に制限(つまり self.parallelism = 1)されたLocalExecutor といって差し支えないでしょう。このオプションのおかげでローカルで実行されるエグゼキューターの実装が単一のものとなるかもしれません。


あるクラス(LocalExecutor)について説明しているさなかに別のクラス(BaseExecutor)に言及しだしたり。。。あるクラスと別のクラスは似ていて大は小を兼ねるから統合されうるだろうと(仕様ではなく)可能性のロードマップを語りだしたり。。。
こういう奔放でフランクで分かりにくいドキュメントはApache系らしいよね、と苦笑いしてしまいました。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?