我目前还未认识的MWAA
MWAA为调度器和工作人员使用Fargate。MWAA必须至少有一个调度器,它必须是Fargate,我假设24/7无休止的过程(以避免分解)。调度器Fargate机器也在运行芹菜执行器。
当触发时,DAG被执行器拆分为任务,每个任务被添加到队列中,由Worker从队列中提取。对于bash操作符,任务被提交给Fargate工人并在那里执行。
工作人员缩放是由Fargate管理的,您只能指定min/max计数。在同时提交任务的情况下,会触发员工分解--可能会失败(知道问题)。
问题
假设单任务DAG的执行。任务在另一个AWS服务上执行,即EMR (EmrAddStepsOperator)。
EmrAddStepsOperator是否先提交给MWAA法门工人,然后才提交给电子病历?还是由MWAA调度器直接提交给EMR?发布于 2021-11-30 18:49:01
答案是一样的,不管MWAA //其他什么东西。
气流是调节器的工具。任务在气流工作人员上运行,但是任务的“核心”可以在另一个服务上执行。考虑一下执行某些SQL的任务用例。SQL的实际计算是在数据库上完成的,而不是在提交SQL作业的机器上完成的。气流必须为每个操作员创建一个任务,此任务必须在气流工作人员上运行。如果任务对工作人员本身执行计算/处理,或者将作业提交到另一个服务,然后等待依赖于任务本身的响应。
为了更好地解释:任何操作符必须实现的execute()函数都运行在您的芹菜工人身上。在这个函数中,可以有部分代码将作业提交到另一个服务,如EMR。在这些情况下,您还可以选择在外部服务(EMR)返回答案(同步方式)或同时释放芹菜工人做其他事情(运行另一个任务)之前保持芹菜工人。这取决于操作员是如何实现的。
因此,要回答你的问题:
EmrAddStepsOperator时,将为它创建一个任务。该任务将由CeleryExecutor处理,并将发送给芹菜工人。当任务开始运行时,它将执行步骤,只有这样,才会向EMR提交一个步骤。CeleryExecutor向芹菜工人提交任务。它不知道/不关心您的任务正在与哪些服务交互。也就是说,如果您的任务只将作业提交给其他服务,那么您可能不需要内存/cpu较高的工作人员,因为工作人员不需要进行大量的处理。https://stackoverflow.com/questions/70162273
复制相似问题