气流可以扩展多少?

chr*_*non 4 airflow airflow-scheduler

有没有人报道他们能够让Airflow在他们公司扩展多少?我正在考虑实施Airflow来执行5,000多个任务,每个任务每小时运行一次,有一天可以扩展到20,000多个任务.在检查调度程序时,它看起来可能是一个瓶颈,因为只有一个实例可以运行,而且我关心调度程序将难以跟上的许多任务.我可以做?

Vir*_*ekh 6

我们每天在我的公司执行数千项任务,并且在2年的大部分时间里一直使用Airflow.这些dags每15分钟运行一次,并通过可随时更改的配置文件生成(从UI提供).

简短的回答 - 是的,根据您的基础设施,它肯定可以扩展到那个.一些新的1.10功能应该比运行所有这些任务的1.8版本更容易.我们在一个大型Mesos/DCOS上运行了这个,它经过了大量的微调以达到稳定点.

答案很长 - 虽然它可以扩展到那个,但我们发现更好的解决方案是具有不同配置的多个Airflow实例(调度程序设置,工作人员数量等)针对它们运行的​​类型dag进行了优化.运行长时间运行的机器学习作业的一组DAG应托管在与运行5分钟ETL作业的Airflow实例不同的Airflow实例上.这也使不同团队更容易维护他们负责的工作,并且可以更轻松地迭代所需的任何微调.

  • 请注意,虽然Airflow中存在一个关键依赖关系**没有*缩放 - 调度程序.您不能将多个调度程序用于不同的DAG,因此运行调度程序的唯一选择是大型实例是垂直扩展.在有一个很好的选择之前,使用多个Airflow实例将是扩展的最佳选择. (4认同)
  • 好主意,谢谢.在运行多个Airflow实例时,您是否遇到过这样的情况:您希望在一个Airflow实例中运行的DAG是单独Airflow实例中DAG的依赖关系,还是让它们保持很大程度上独立? (3认同)
  • 一般来说,我们试图让它们独立于另一个.但是,如果需要这样的东西,我们可能在Airflow A中有一个任务输出外部文件存储中的文件(例如S3),并在Airflow B中有一个DAG,其中有一个等待该文件的传感器 (2认同)
  • 你们正在使用什么样的后端来帮助Airflow扩展到数千个任务?我们使用MySQL后端,并且在大约同时启动一千个任务时,达到了CPU /连接高峰的极限。 (2认同)