[+]文章目录

Mesos 0.23.0 针对 Mesos fetcher cache 做出了实验性的支持。

在这方便,我们简单地将“下载”视为从本地文件系统进行拷贝。

什么是 Mesos fetcher

 

Mesos fetcher 是一个将资源下载到用于运行任务的沙盒目录的机制。最为 TaskInfo 消息的一部分,用于整理任务执行的框架提供了,CommandInfo::URI protobuf 值的列表,并决定哪个将作为 Mesos fetcher 的输入。

默认情况下,每个要求的 URI 直接下载到沙盒目录中。另外,fetcher 还可以指导缓存 URI 在指定的目录里下载。

Mesos fetcher 机制包括以下两个部分:

  • slave-internal Fetcher 进程控制和协调着所有的行动。每个从属实例只有一个内部的 fetcher 可以被各种 containerizer 使用 (除了外部 containerizer 变量)。
  • 外部的 mesos-fetcher 被前者调用。 它除了文件删除和文件大小查询缓存,所有的网络和磁盘操作都执行。为了保护 I/O 相关子进程,它作为一个外部 OS 进程运行。它需要包含一个有详细 fetch 动作说明的 JSON 对象的环境变量。

提取机制

 

框 架启动任务通过调用调度驱动程序的方法 launchTasks(),传递 CommandInfo 的 protobuf 的结构作为参数。 这种类型结构所指定了一个命令和需要被“fetcher”到子节点沙盒目录的 URI 列表。因此,当子节点接到一个启动任务的指令后,它会调用 fetcher,提供指定的资源投入到沙盒目录中。如果 fetch 失败了,任务不会启动并且报告的任务状态会是 TASK_FAILED。

All URIs requested for a given task are fetched sequentially in a single invocation of mesos-fetcher. Here, avoiding download concurrency reduces the risk of bandwidth issues somewhat. However, multiple fetch operations can be active concurrently due to multiple task launch requests.


« 前一篇