【问题标题】:Run a large amount of tasks on a cluster在集群上运行大量任务
【发布时间】:2021-05-15 17:07:33
【问题描述】:

我正在寻找在集群上运行大量任务并监控其状态的解决方案。

详细说明:每个任务由 3-4 个 docker 包含的进程组成(每个进程都是一个 docker run 命令)。所有进程都必须在同一台服务器上运行。

我们所说的任务数量是一次爆发数百个任务。

我研究了几种基于 Mesos 的解决方案:

  • Chronos - 似乎它在高负载下会动摇,并且在任何情况下都更倾向于重复 (cron) 作业。虽然我需要一次性(繁重的)工作。
  • 自定义 Mesos 固件 - 对于我的需求来说,似乎是低级别的,需要我编写调度和重试机制,我会将其保存以备不时之需。
  • Aurora - 这似乎很有希望,因为每个任务都在同一个节点上运行并由多个进程组成。不过,我在这里遗漏了一些:Aurora 似乎无法将多个任务作为单个作业的一部分运行。由于我的任务都具有不同的输入,因此我可以使用具有许多(例如 400 个)实例的单个作业,并且每个任务的第一个进程(其角色是从 S3 下载输入)可以根据实例 ID 下载不同的集合.这给我带来了另一个问题:我找不到在 .aurora 文件中使用 {{ mesos.instance }} 的工作示例,谁能给我一个示例?

感谢所有的鱼人

【问题讨论】:

    标签: task cluster-computing mesos apache-aurora


    【解决方案1】:

    您还可以查看Kubernetes(也可以作为framework in Mesos 运行)。 Kubernetes 有Pods 的概念,它们基本上是一组位于同一位置的容器。因此,在您的情况下,一个 pod 将由您的 3-4 个进程/容器组成,然后这些 pod 可以按比例放大/缩小。

    关于您提到的其他解决方案的简短说明:

    • Chronos:并非真正针对您的用例
    • 自定义固件:实际上并没有那么难,但最好将其保存为最后的手段。
    • Aurora:非常强大但也很复杂的框架
    • Marathon(您没有提到):针对可以轻松扩展和缩减的长时间运行的应用程序。

    【讨论】:

    • 首先,谢谢 Marathon,我知道它是 Mesos 的 init.d。我不是在寻找服务,而是在寻找应用程序。所以我认为它不适合。
    • 同意,请记住,如果您总是希望少量实例运行,然后在某些事件中爆发(即增加实例数量),它也可能很有趣。
    【解决方案2】:

    除了其他出色的答案之外,您还可以查看 Two Sigma 的 Cook,他们最近才开源,但已经在生产中大规模使用了一段时间。

    【讨论】:

    • 好建议,我个人到目前为止还没有测试过:-)。 co-location 约束似乎很好地映射到 kubernetes pod,没有发现 cook 是否具有相似的原语。
    猜你喜欢
    • 2019-10-24
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 2018-03-09
    • 2016-06-06
    相关资源
    最近更新 更多