繁体   English   中英

用于编排的 AWS Step Functions 与 Luigi

[英]AWS Step Functions vs Luigi for orchestration

我的团队为小规模项目提供单一服务,但为了重新架构和扩展,我们计划迁移到 Amazon AWS 的云服务并评估编排是将 Luigi 作为容器任务运行还是使用 AWS Step Functions? 我对他们中的任何一个都没有任何经验,尤其是路易吉。 谁能指出他们在 Luigi 上看到的任何问题,或者如果有的话,它如何证明比 AWS 更好? 任何其他相同的建议。

提前致谢。

我不知道 AWS 如何进行编排,但如果您计划在任何时候扩展到至少数千个工作岗位,我不建议投资 Luigi。 Luigi 对于中小型(ish)项目非常有用。 它提供了一个出色的界面,用于定义作业并通过原子文件系统操作确保作业完成。 然而,Luigi 的问题在于运行作业的框架。 Luigi 需要与工作人员持续通信才能运行,以我自己的经验,当我尝试扩展时,这会破坏网络带宽。

对于我的研究,我将使用我所在大学运行 SLURM 的集群计算网格,在轻到中型工作流程上生成一个包含 10,000 个任务的网络。 我所有的任务都不需要那么长的时间来完成,每个最多可能需要 5 分钟。 我尝试了以下三种方法来有效地使用 Luigi。

  1. SciLuigi 的 slurm 任务从中央 luigi 工作人员(不使用中央调度程序)向 SLURM 提交作业。 如果您的工作将被快速接受并运行,则此方法效果很好。 但是,它在调度节点上使用了不合理数量的资源,因为每个工作人员都是一个新进程。 此外,它会破坏您在系统中拥有的任何优先级。 更好的方法是首先分配许多工人,然后让他们继续工作。

  2. 我尝试的第二种方法就是这样。 我在我的家庭服务器上启动了 Luigi 中央调度程序(因为否则我无法监控 state 的工作,就像在上面的工作流程中一样)并在 SLURM 集群上启动了所有具有相同配置的工作人员,因此他们每个人都可以运行实验的任何部分。 问题是,即使有 500Mbps 的互联网,超过 50 名员工 Luigi 也会停止运行,我与服务器的互联网连接也会停止。 因此,我开始运行只有 50 名工人的工作,这大大减慢了我的工作流程。 此外,每个工人都必须向中央调度程序注册每项工作(另一个巨大的痛点),这可能需要数小时,而只有 50 名工人。

  3. 为了减少启动时间,我决定按参数对根任务子树进行分区,并将每个子树提交给 SLURM。 所以现在启动时间相当短,但我失去了任何工人运行任何工作的能力,这仍然非常重要。 此外,我仍然只能与约 50 名工人一起工作。 完成子树后,我运行了最后一项作业来完成实验。

总之,Luigi 非常适合中小型工作流程,但是一旦您开始处理 1,000 多个任务和工作人员,该框架很快就会跟不上。 我希望我的经验能够对框架提供一些见解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM