Mesos Architecture

本文介绍了Mesos架构及其资源分配原理。Mesos通过主进程管理集群中的客户端进程,并利用框架来运行任务。主进程根据策略为每个框架提供资源,而框架选择如何使用这些资源。此外,还详细阐述了资源分配流程及如何实现数据本地化。

这里写图片描述

The above figure shows the main components of Mesos. Mesos consists of a master daemon that manages agent daemons running on each cluster node, and Mesos frameworks that run tasks on these agents.

上面的图形展示了Mesos的主要部件。Mesos由一个管理每个集群节点客户端进程的主进程以及在这些客户端运行任务的Mesos框架组成。

The master enables fine-grained sharing of resources (CPU, RAM, …) across frameworks by making them resource offers. Each resource offer contains a list of <agent ID, resource1: amount1, resource2: amount2, ...> (NOTE: as keyword ‘slave’ is deprecated in favor of ‘agent’, driver-based frameworks will still receive offers with slave ID, whereas frameworks using the v1 HTTP API receive offers with agent ID). The master decides how many resources to offer to each framework according to a given organizational policy, such as fair sharing or strict priority. To support a diverse set of policies, the master employs a modular architecture that makes it easy to add new allocation modules via a plugin mechanism.

master可以在框架之间进行细粒度的资源分配满足它们的资源需求。每个资源需求是由一个列表

A framework running on top of Mesos consists of two components: a scheduler that registers with the master to be offered resources, and an executor process that is launched on agent nodes to run the framework’s tasks (see the App/Framework development guide for more details about framework schedulers and executors). While the master determines how many resources are offered to each framework, the frameworks' schedulers select which of the offered resources to use. When a framework accepts offered resources, it passes to Mesos a description of the tasks it wants to run on them. In turn, Mesos launches the tasks on the corresponding agents.

一个运行在mesos上面的框架由两部门组成:一个用来向master注册并索取资源供应的调度,以及一个运行在代理节点运行框架任务(获取更多信息,请参考App/Framework开发指南)的执行进程。虽然master决定了资源怎么分配给每个框架,每个框架的调度会选择master提供的资源应该怎么来进行使用。当一个框架接受了提供的资源,框架会向mesos传递它想运行在这些资源上面运行任务的描述。反过来,mesos启动对应代理节点的任务。

Example of resource offer

The figure below shows an example of how a framework gets scheduled to run a task.

下面的图片展示了一个框架是如何被调度去运行一个任务。

这里写图片描述

Let’s walk through the events in the figure.

让我们穿越图片。

Agent 1 reports to the master that it has 4 CPUs and 4 GB of memory free. The master then invokes the allocation policy module, which tells it that framework 1 should be offered all available resources.

代理1向master报告,它有4个CPU和4GB的空闲内存。master这个时候调用分配策略模块,告诉它框架1可以被分配所有可用的资源。

The master sends a resource offer describing what is available on agent 1 to framework 1.
The framework’s scheduler replies to the master with information about two tasks to run on the agent, using <2 CPUs, 1 GB RAM> for the first task, and <1 CPUs, 2 GB RAM> for the second task.

master发送一个资源通知描述了啥可以在代理1上的框架1。框架调度回复master关于两个任务运行的代理信息,使用<2CPU,1GB RAM>用于第一个任务,使用<1CPU,2GB RAM>用于第二个任务。

Finally, the master sends the tasks to the agent, which allocates appropriate resources to the framework’s executor, which in turn launches the two tasks (depicted with dotted-line borders in the figure). Because 1 CPU and 1 GB of RAM are still unallocated, the allocation module may now offer them to framework 2.
In addition, this resource offer process repeats when tasks finish and new resources become free.

最后,master把任务发送给代理,代理分配合适的资源给框架的执行者,执行者接下来执行了两个任务(在图片中用虚线边界进行了描述)。由于1CPU和1GB的内存还是未分配状态,分配模块也许现在会提供给框架2。
另外,这个资源通知过程一直在重复,直到任务结束和新资源变成空闲。

While the thin interface provided by Mesos allows it to scale and allows the frameworks to evolve independently, one question remains: how can the constraints of a framework be satisfied without Mesos knowing about these constraints? For example, how can a framework achieve data locality without Mesos knowing which nodes store the data required by the framework? Mesos answers these questions by simply giving frameworks the ability to reject offers. A framework will reject the offers that do not satisfy its constraints and accept the ones that do. In particular, we have found that a simple policy called delay scheduling, in which frameworks wait for a limited time to acquire nodes storing the input data, yields nearly optimal data locality.

虽然mesos提供的细微的接口允许它进行扩展以及框架可以独立的扩展,有一个问题:如何在mesos没有知道这些限制的情况下,使得框架的限制得到满足?例如,一个框架需要有数据本地化需求,如何在mesos不知道哪些节点存储了这些数据的情况下,使得框架的需求得到满足?mesos的回答很简单,简单的赋予光甲有能力拒绝提供的资源。一个框架会拒绝没有满足限制,接受满足限制的提供。尤其是,我们找到了一个简单的策略叫做延迟调度,框架使用一定的限制时间等待节点装在输入的数据,达到最佳的数据本地化。

You can also read much more about the Mesos architecture in this technical paper.

你可以在科技白皮书阅读关于mesos架构更多的咨询。

【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模与控制策略,结合Matlab代码与Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态与位置控制上具备更强的机动性与自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模与先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模与仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码与Simulink模型,逐步实现建模与控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性与适应性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值