哪个性能更高:创建 1000 多个 DAG 或 1 个 DAG 包含 1000 多个任务?
Which is more performant: creating 1000+ DAGs or 1 DAG w/ 1000+ tasks?
我有一个 Apache Airflow DAG,它可以获取股票代码的数据并将其加载到数据湖中。有数千种股票代码。
现在我正在使用模板为每个股票代码创建一个 DAG。我想知道创建单个 DAG 并拥有数千个任务是否会更高效。
我尝试使用一个 DAG 和多个任务,只有 500 个股票代码,Airflow UI 开始变得无响应以加载图形视图(仅供参考,我的工作机器有 64GB 内存)。
如果一个用于数千个符号的工作流创建 1000 多个 DAGS 或任务,我真的需要遵循最具可扩展性的做法,因为将来会添加更多工作流。
感谢您的帮助!
除非您需要在逻辑上分离每个交易品种的任务,否则我认为最好修改您当前的运算符以接受交易品种列表并在运算符中使用一些并发来加快速度。通过这种方式,将来会很容易管理,因为您可以决定需要启动多少工作作业来完成管道,而不会导致 UI 的主要负载可视化所有任务。
要改善 UI 体验,您可以按 10/20 或看起来可行的比例将任务分组到 task groups(在 Airflow 2.0 中)。每个符号有一个 dag 听起来难以维护,但从 2.0 的性能角度来看,这应该不会对调度产生太大影响。
我有一个 Apache Airflow DAG,它可以获取股票代码的数据并将其加载到数据湖中。有数千种股票代码。
现在我正在使用模板为每个股票代码创建一个 DAG。我想知道创建单个 DAG 并拥有数千个任务是否会更高效。
我尝试使用一个 DAG 和多个任务,只有 500 个股票代码,Airflow UI 开始变得无响应以加载图形视图(仅供参考,我的工作机器有 64GB 内存)。
如果一个用于数千个符号的工作流创建 1000 多个 DAGS 或任务,我真的需要遵循最具可扩展性的做法,因为将来会添加更多工作流。
感谢您的帮助!
除非您需要在逻辑上分离每个交易品种的任务,否则我认为最好修改您当前的运算符以接受交易品种列表并在运算符中使用一些并发来加快速度。通过这种方式,将来会很容易管理,因为您可以决定需要启动多少工作作业来完成管道,而不会导致 UI 的主要负载可视化所有任务。
要改善 UI 体验,您可以按 10/20 或看起来可行的比例将任务分组到 task groups(在 Airflow 2.0 中)。每个符号有一个 dag 听起来难以维护,但从 2.0 的性能角度来看,这应该不会对调度产生太大影响。