我想使用java在集群上分发Docker容器,并定义依赖关系,这样当一个容器完成时,我就可以在java代码中解析生成的输出。有许多mesos框架可以实现这一点,但我不确定该采用哪一个: Marathon,Singularity,Chronos,Aurora。
到目前为止,我学到的是:
Marathon有一个非常好的java客户端api,但是用于长期任务(不知道这是不是一个问题,因为我的任务不会运行那么长时间),我不认为我可以定义这种依赖。如果我要使用马拉松,我将不得不轮询应用程序的状态。Chronos没有java api (至少我找不到)。所以我可以在极光和奇点之间选择。
有没有人能帮我推荐其中的一个给我用。
发布于 2015-02-12 20:14:27
Chronos (像马拉松一样)是用Scala编写的,所以它应该很容易与任何基于JVM的应用程序集成。更好的是,它们(实际上可能都是4个)都有REST app,所以您可以只需卷曲您的操作/查询,而无需考虑每个应用程序/服务的实现语言。
对于您的用例,您可能更喜欢Chronos而不是Marathon,因为您希望任务完成(而不是重新启动)。马拉松是为长跑而设计的(马拉松,跑步..明白了吗?)任务,因此它将重新启动失败/完成的任务。Chronos类似于具有依赖关系的分布式cron,因此您可以调度作业,然后添加依赖作业,以便在以前的作业完成后启动,从而构建任意的作业DAG。
我会让其他人加入到有关极光和奇点的讨论中。我认为它们都支持类似cron的工作。
发布于 2015-05-31 09:22:00
Apache Aurora在February's 0.7.0 release中添加了Docker支持,并且可以使用相同的调度程序管理长时间运行的服务和cron。它也是用Java编写的。
贡献这个特性的开发者有一个关于how they schedule Docker containers using Aurora的很棒的技术演讲。尽管talk中提供的示例是针对长时间运行的服务的,但您的作业配置只需稍作更改即可指定服务与cron。
发布于 2015-02-12 20:24:44
对于这一点,Chronos是很好的。您可以在Chronos中创建依赖DAG。但是,它没有为您提供将参数从一个作业传递到另一个作业的机制。您必须序列化和反序列化整个集群中的DB或共享存储中的内容。
https://stackoverflow.com/questions/28458504
复制相似问题