我的团队有一个针对小型项目的整体服务,但为了重新架构和扩展,我们计划迁移到 Amazon AWS 的云服务,并评估编排是否将 Luigi 作为容器任务运行或使用 AWS Step Functions?我对他们中的任何一个都没有任何经验,尤其是路易吉。
谁能指出他们在 Luigi 中遇到的任何问题,或者如何证明它比 AWS 更好(如果有的话)?任何其他相同的建议。
提前致谢。
我不知道 AWS 如何进行编排,但如果您计划在任何时间扩展到至少数千个工作岗位,我不建议投资 Luigi。 Luigi 对于中小型项目非常有用。它提供了一个出色的界面,用于定义作业并通过原子文件系统操作确保作业完成。然而,Luigi 的问题是运行作业的框架。 Luigi 需要与工作人员不断沟通才能运行,根据我自己的经验,当我尝试扩展时,这会破坏网络带宽。
在我的研究中,我将使用我大学运行 SLURM 的集群计算网格,在轻到中型工作流程上生成一个包含 10,000 个任务的网络。我所有的任务都不需要那么长时间才能完成,每个任务最多可能需要 5 分钟。我尝试了以下三种方法来有效地使用Luigi。
SciLuigi 的 slurm 任务是从中央 luigi 工作人员(不使用中央调度程序)向 SLURM 提交作业。如果您的作业能够快速被接受并运行,则此方法非常有效。然而,它在调度节点上使用了不合理的资源量,因为每个工作进程都是一个新进程。此外,它还会破坏您在系统中拥有的任何优先级。更好的方法是先分配很多工人,然后让他们不断地工作。
我尝试的第二种方法就是这样。我在我的家庭服务器上启动了 Luigi 中央调度程序(因为否则我无法监控工作状态,就像上面的工作流程一样),并在 SLURM 集群上启动工作人员,这些工作人员都具有相同的配置,因此每个工作人员都可以运行实验的任何部分。问题是,即使有 500Mbps 的互联网,过去大约 50 名员工 Luigi 也会停止工作,我的服务器的互联网连接也会停止。因此,我开始只用 50 名员工来运行作业,这大大减慢了我的工作流程。此外,每个工人都必须向中央调度程序注册每个作业(另一个巨大的痛点),如果只有 50 个工人,这可能需要几个小时。
为了缩短启动时间,我决定按参数对根任务子树进行分区,并将每个子树提交给 SLURM。所以现在启动时间相当短,但我失去了任何工人运行任何作业的能力,这仍然非常重要。而且,我仍然只能和大约 50 名工人一起工作。当我完成子树时,我运行了最后一项工作来完成实验。
总之,Luigi 非常适合中小型工作流程,但一旦开始处理 1,000 多个任务和工作人员,框架很快就会跟不上。我希望我的经验能为该框架提供一些见解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)