Airflow with multiple Schedulers and LocalExecutor 是否提供了水平扩展的完整解决方案?
Does Airflow with multiple Schedulers and LocalExecutor provide a complete solution for horizontal scale up?
使用LocalExecutor 时,airflow 任务是否由驻留在Scheduler 组件中的本地worker 处理?
所以如果在实践中,可以将调度器设置为由他们自己的本地工作人员执行任务,
这是否意味着即使使用 LocalExecutor,使用多个调度器设置 Airflow 也能提供水平扩展的解决方案?
使用 Airflow 的 LocalExecutor,调度程序进程产生(或分叉)执行任务的子进程,默认最多 32 个,由 AIRFLOW__CORE__PARALLELISM
配置。
在可以拥有多个调度程序之前,LocalExecutor 确实是为了 运行 在一台机器上运行。使用多个调度器,确实可以水平扩展。但是,在任何分布式系统中,扩展“大脑”而不是(或更准确地说是与“工人”一起)是您看不到的事情。
我没有具体的数字来支持 Airflow 的执行情况,但是例如 Astronomer 将调度程序的数量限制为 4,GCP Composer 的数量限制为 10,AWS MWAA 的数量限制为 5。您可以缩放所有这些服务的工人不仅如此。当您需要水平可扩展性时,我会选择 CeleryExecutor 或 KubernetesExecutor,它们从一开始就考虑了水平可扩展性,并且可以 运行 并在与调度程序进程分开的机器上扩展任务。
注意:术语“工作者”仅适用于 CeleryExecutor,您可以在其中启动执行任务的单独“工作者”进程。
使用LocalExecutor 时,airflow 任务是否由驻留在Scheduler 组件中的本地worker 处理? 所以如果在实践中,可以将调度器设置为由他们自己的本地工作人员执行任务, 这是否意味着即使使用 LocalExecutor,使用多个调度器设置 Airflow 也能提供水平扩展的解决方案?
使用 Airflow 的 LocalExecutor,调度程序进程产生(或分叉)执行任务的子进程,默认最多 32 个,由 AIRFLOW__CORE__PARALLELISM
配置。
在可以拥有多个调度程序之前,LocalExecutor 确实是为了 运行 在一台机器上运行。使用多个调度器,确实可以水平扩展。但是,在任何分布式系统中,扩展“大脑”而不是(或更准确地说是与“工人”一起)是您看不到的事情。
我没有具体的数字来支持 Airflow 的执行情况,但是例如 Astronomer 将调度程序的数量限制为 4,GCP Composer 的数量限制为 10,AWS MWAA 的数量限制为 5。您可以缩放所有这些服务的工人不仅如此。当您需要水平可扩展性时,我会选择 CeleryExecutor 或 KubernetesExecutor,它们从一开始就考虑了水平可扩展性,并且可以 运行 并在与调度程序进程分开的机器上扩展任务。
注意:术语“工作者”仅适用于 CeleryExecutor,您可以在其中启动执行任务的单独“工作者”进程。