2017-11-17 6 views
0

免責事項:私は(まだ)Airflowのユーザーではなく、今日それについて見つかったばかりで、私のユースケースに合っているかどうかを調査し始めています。エアフローを使用して、1つのワークフローの別個のタスクを別々のマシンで実行するにはどうすればよいですか?

私は、複数のタスクの順次(非並列)実行である1つのデータ処理ワークフローを持っています。ただし、一部のタスクは特定のマシンで実行する必要があります。気流でこれを管理できますか?このユースケースのアドバイスされた実装モデルは何でしょうか?

ありがとうございました。

答えて

1

はい、これは気流でqueuesで実現できます。特定のキューにタスクを割り当てることができます。次に、マシン上の各ワーカーに対して、選択キューからの取り出しタスクのみに設定することができます。コードで

、それは次のようになります。

:あなたはこれであなたの労働者を開始したのであれば

# Default queue that tasks get assigned to and that worker listen on. 
default_queue = default 

:airflow.cfgでこの設定があることが

task_1 = BashOperator(
    dag=dag, 
    task_id='task_a', 
    ... 
) 

task_2 = PythonOperator(
    dag=dag, 
    task_id='task_b', 
    queue='special', 
    ... 
) 

注意を

Server A> airflow worker 
Server B> airflow worker --queues special 
Server C> airflow worker --queues default,special 

次に、task_1はサーバーA + Cによって収集され、タスク2はサーバーB + Cによって収集されます。

+0

ありがとう、これは私が知る必要があったものです。おそらく各作業者にノードのホスト名という名前のキューを割り当てます。 – user2679436

関連する問題