0

我将建立一个 Mesos 集群来运行一次性 docker 作业,例如 long rapidminer 计算。当然我想得到计算的结果,所以我认为我应该使用 Docker 卷。

现在,当我将 docker 作业发送到集群时,例如在 Marathon 或 Chronos 的 JSON 作业文件中指定体积时,我的计算结果会落在哪里?

我猜它被放入从节点上的相应目录中,但我真的必须进入 Mesos 界面,查找哪个节点执行了我的工作,ssh 进入该节点并将我的结果文件复制出来吗?这似乎与 Mesos 从单台计算机抽象的整个想法非常违反直觉。

这种情况的优雅解决方案是什么?我对集群管理很陌生,所以我能想到的唯一好的解决方案是分布式文件系统,虽然我不知道这是否会在 Marathon 或 Chronos 的作业文件中得到支持。

4

3 回答 3

2

rukletsov 和 js84 的其他答案都是不错的选择,但我想指出一个简单的选择。使用 Mesos 的 Docker 容器化程序时,任务沙箱作为卷挂载在 $MESOS_SANDBOX 中,默认情况下/mnt/mesos/sandbox/在容器内,因此您可以将结果存储在那里,或者只是写入也重定向到那里的 stdout/stderr。无需创建自己的卷。

然后你可以使用mesos-climesos tail --follow task-id filemesos cat task-id file [file]

于 2015-05-11T17:49:43.127 回答
1

正在进行的工作是在 mesos 中更好地支持分布式文件系统。截至目前,一种潜在的解决方案可能是使用hdfs并在那里写下你的输出。

希望这可以帮助!

于 2015-05-11T08:13:58.217 回答
1

可以肯定地说,Mesos 假定您的所有最终数据在您的任务完成时都存储在某个地方,确保这一点是您的,或者如果您愿意,您的任务或框架的责任。如果你想持久化中间结果,或者在任务之间共享结果,你可以查看持久化卷,它目前正在开发中,并且有望在下一个 Mesos 版本中出现。请注意,它们被视为节点资源的一部分并且不会被复制,因此在节点故障的情况下将丢失。

作为分布式文件系统的替代方案,您可以修改您的任务,使其将计算结果发送到某个存储,例如数据库、ftp 服务器等。

于 2015-05-11T09:48:12.753 回答