Airflow 如何使用气流在不同的机器上运行一个工作流的不同任务?
免责声明:我不是(尚未)Airflow的用户,今天才发现它,我开始探索它是否适合我的使用案例 我有一个数据处理工作流,它是多个任务的顺序(而不是并行)执行。但是,有些任务需要在特定的机器上运行。你能做到吗?这个用例的建议实现模型是什么Airflow 如何使用气流在不同的机器上运行一个工作流的不同任务?,airflow,apache-airflow,Airflow,Apache Airflow,免责声明:我不是(尚未)Airflow的用户,今天才发现它,我开始探索它是否适合我的使用案例 我有一个数据处理工作流,它是多个任务的顺序(而不是并行)执行。但是,有些任务需要在特定的机器上运行。你能做到吗?这个用例的建议实现模型是什么 谢谢。是的,您可以在气流中使用。您可以将任务绑定到特定队列。然后,对于机器上的每个工作人员,可以将其设置为仅从选定队列拾取任务 在代码中,它将如下所示: task_1 = BashOperator( dag=dag, task_id='task_a
谢谢。是的,您可以在气流中使用。您可以将任务绑定到特定队列。然后,对于机器上的每个工作人员,可以将其设置为仅从选定队列拾取任务 在代码中,它将如下所示:
task_1 = BashOperator(
dag=dag,
task_id='task_a',
...
)
task_2 = PythonOperator(
dag=dag,
task_id='task_b',
queue='special',
...
)
请注意,airflow.cfg中有此设置:
# Default queue that tasks get assigned to and that worker listen on.
default_queue = default
因此,如果您的员工从以下几点开始:
Server A> airflow worker
Server B> airflow worker --queues special
Server C> airflow worker --queues default,special
然后任务1可以由服务器A+C拾取,任务2可以由服务器B+C拾取。谢谢,这是我需要知道的。我可能会为每个工作者分配一个名为节点主机名的队列。这里值得一提的一个警告是,您可以将一个节点分配给多个队列,但不能要求一个任务有多个队列。示例:如果任务需要两个程序
special1
和special2
,则必须为任务创建第三个队列special1\u plus\u 2
,并将special1
和special2
启用节点分配给所有三个队列。