apachemesos调度器和执行器示例

zqry0prt  于 2021-06-21  发布在  Mesos
关注(0)|答案(3)|浏览(291)

我试图理解mesos的各个组件是如何协同工作的,并发现了这本优秀的教程,其中包含以下体系结构概述:

我对这一点有一些担心,但没有明确指出(无论是在文章中还是在官方mesos文档中):
调度程序在哪里运行?是否存在“调度程序节点”,其中只应运行调度程序?
如果我在编写自己的mesos框架,我需要实现什么样的调度器功能?它是否只是一个二进制的yes/no或accept/reject,用于主机发送的报价?有具体的例子吗?
如果我在编写自己的mesos框架,我需要实现什么执行器功能?有具体的例子吗?
什么是一个具体的例子,任务将被发送给执行者?
执行器是“固定”(永久安装)在从属服务器上,还是以“按需”的方式浮动,动态地/动态地安装和执行?

ryhaxcpt

ryhaxcpt1#

计划者:是一些接受或拒绝报价的策略。我们可以自己编写调度程序,也可以使用chronos之类的现有调度程序。在调度程序中,我们应该评估可用的资源,然后接受或拒绝。
调度器功能:例如,假设您有一个需要8个cpu才能运行的任务,但是mesos提供的可能是6个cpu,在这种情况下无法满足需要,您可以拒绝。
executor功能:executor处理任务的状态相关信息。您需要实现的一组api,比如mesos slave中已分配任务的状态。在运行executor的mesos slave中,当前可用的cpu数量是多少。
执行者的具体例子:chronos
动态/动态地安装和执行:这是不可能的,您需要预先配置执行器。但是,可以使用自动缩放复制执行器。

v1uwarro

v1uwarro2#

好问题!我相信看看rendler这样的示例框架会非常有帮助。这可能会回答您的大部分问题,并让您感觉到内部框架。
现在让我试着回答这个问题,这个问题可能在这之后仍然悬而未决。
计划程序位置
调度器不在任何特殊节点上,但请记住,调度器也可以进行故障转移(以及分布式系统中的任何部分)。
计划程序功能
看看rendler或框架开发指南。
执行器功能/任务
我相信rendler是理解任务/执行者关系的一个很好的例子。只要开始阅读github主页上的自述/描述。
执行人钉住
当需要执行器的第一个任务被发送到此节点时,每个节点上的执行器都会启动。在此之后,它将保留在该节点上。
希望这有帮助!

v1l68za4

v1l68za43#

除了js84的出色响应,
调度器位置:许多用户喜欢通过另一个框架(如marathon)启动调度器,以确保如果调度器或其节点死亡,则可以在其他地方重新启动。
调度器功能:在向mesos注册之后,您的调度器将开始在 resourceOffers() 回调,在回调中,调度程序应该(至少)对所提供的资源的子集(或全部)启动一个任务。您可能还想实现 statusUpdate() 回调以处理任务完成/失败。注意,如果像marathon/chronos/aurora/kubernetes这样的现有框架可以满足需要,那么您甚至可能不需要实现自己的调度器。
executor功能:如果只想启动linux进程或docker容器并知道它何时完成,通常不需要创建自定义executor。您可以只使用默认的mesos执行器(通过指定 CommandInfo 直接在 TaskInfo ,而不是嵌入 ExecutorInfo ). 但是,如果您想构建一个自定义执行器,那么至少需要实现 launchTask() ,理想情况下 killTask() .
示例任务:示例任务可以是一个简单的linux命令,如 sleep 1000 或者 echo "Hello World" ,或docker容器(通过 ContainerInfo )就像 image : 'mysql' . 或者,如果您使用自定义执行器,那么执行器将定义任务是什么以及如何运行它,因此任务可以改为作为执行器进程中的另一个线程运行,或者只是成为单线程执行器中队列中的项。
executor pinning:executor是通过commandinfo uri分发的,就像任何任务二进制文件一样,因此它们不需要预先安装在节点上。梅索斯会帮你把它取出来。

相关问题