【问题标题】:Docker on Mesos: Volume is placed on which node?Mesos 上的 Docker:卷放置在哪个节点上?
【发布时间】:2015-07-21 06:18:59
【问题描述】:

我将设置一个 Mesos 集群来运行一次性 docker 作业,例如长时间的快速矿工计算。当然我想得到计算的结果,所以我认为我应该使用 Docker 卷。

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

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

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

【问题讨论】:

    标签: docker mesos marathon


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多