颠覆大数据分析之Mesos:集群调度及管理系统

颠覆大数据分析之Mesos:集群调度及管理系统

译者:黄经业    购书

正如前面“Mesos:动机”一节中所述,Mesos的主要目标就是去帮助管理不同框架(或者应用栈)间的集群资源。比如说,有一个业务需要在同一个物理集群上同时运行Hadoop,Storm及Spark。这种情况下,现有的调度器是无法完成跨框架间的如此细粒度的资源共享的。Hadoop的YARN调度器是一个中央调度器,它可以允许多个框架运行在一个集群里。但是,要使用框架特定的算法或者调度策略的话就变得很难了,因为多个框架间只有一种调度算法。比如说,MPI使用的是组调度算法,而Spark用的是延迟调度。它们两个同时运行在一个集群上会导致供求关系的冲突。还有一个办法就是将集群物理拆分成多个小的集群,然后将不同的框架独立地运行在这些小集群上。再有一个方法就是为每个框架分配一组虚拟机。正如Regola和Ducom所说的,虚拟化被认为是一个性能瓶颈,尤其是在高性能计算(HPC)系统中。这正是Mesos适合的场景——它允许用户跨框架来管理集群资源。

Mesos是一个双层调度器。在第一层中,Mesos将一定的资源提供(以容器的形式)给对应的框架。框架在第二层接收到资源后,会运行自己的调度算法来将任务分配到Mesos所提供的这些资源上。和Hadoop YARN的这种中央调度器相比,或许它在集群资源使用方面并不是那么高效。但是它带来了灵活性——比如说,多个框架实例可以运行在一个集群里。这是现有的这些调度器都无法实现的。就算是Hadoop YARN也只是尽量争取在同一个集群上支持类似MPI这样的第三方框架而已。更重要的是,随着新框架的诞生,比如说Samza最近就被LinkedIn开源出来了——有了Mesos这些新框架可以试验性地部署到现有的集群上,和其它的框架和平共处。

Mesos组件

Mesos的关键组件是它的主从守护,正如图2.5所示,它们分别运行在Mesos的主节点和从节点上。框架或者框架部件都会托管在从节点上,框架部件包括两个进程,执行进程和调度进程。从节点会给主节点发布一个可用资源的列表。这是以<2 CPU,8GB内存>列表的形式发布的。主节点会唤起分配模块 ,它会根据配置策略来给框架分配资源。随后主节点将资源分配给框架调度器。框架调度器接收到这个请求后(如果不满足需求的话,也可能会拒绝它),会将需要运行的任务列表以及它们所需的资源发送回去。主节点将任务以及资源需求一并发送给从节点,后者会将这些信息发送给框架调度器,框架调度器会负责启动这些任务。集群中剩余的资源可以自由分配给其它的框架。接下来,只要现有的任务完成了并且集群中的资源又重新变为可用的,分配资源的过程会随着时间不断地重复。需要注意的是,框架不会去说明自己需要多少资源,如果无法满足它所请求的资源的话,它可以拒绝这些请求。为了提高这个过程的效率,Mesos让框架可以自己设置过滤器,主节点在分配资源之前总会首先检查这个条件。在实践中,框架可以使用延迟调度,先等待一段时间,待获取到持有它们所需数据的节点后再进行计算。

图2.5  Mesos的架构

一旦资源分配好了,Mesos会立即提供给框架。框架响应这次请求可能会需要一定的时间。这得确保资源是加锁的,一旦框架接受了这次分配后资源是立即可用的。如果框架长时间没有响应的话,资源管理器(RM)有权撤销这次分配。

资源分配

资源分配模块是可插拔的。目前一共有两种实现——一种是Ghodsi等人(2011)提出的主导资源公平(Dominant Resource Fairness, DRF)策略。Hadoop中的公平调度器(https://issues. apache.org/jira/browse/HADOOP-3746)会按照节点的固定大小分区(也被称为槽)的粒度来分配资源。这样做的效率会差,尤其是在现代的多核处理器的异构计算环境中。DRF是最小-最大公平算法在异构资源下的一个泛化。需要注意的是,最大最小算法是一个常见的算法,它拥有许多变种比如循环以及加权公平排队,但它通常都用于同类的资源。DRF算法会确保在用户的主导资源中使用最大最小策略。(CPU密集型作业的主导资源是CPU,而IO密集型作业的主导资源则是带宽)。DRF算法中的一些有趣的特性列举如下:

  • 它是公平的,并且吸引用户的一点是,它能保证如果所有资源都是静态平均分布的话,不会偏向任何一个用户。
  • 用户谎报资源需求没有任何好处。
  • 它具有帕累托效率,从某种意义上来说,系统资源利用率最大化且服从分配约束。

框架可以通过API调用获取到保证分配给它们的资源大小。当Mesos必须要杀掉一些用户任务的时候,这个功能就很有用了。如果框架分配的资源在确保的范围内的话,它的进程就不会被Mesos杀掉,如果超出了阈值,Mesos就会杀掉它的进程。

隔离

Mesos使用Linux或者Solaris容器提供了隔离功能。传统的基于hypervisor的虚拟化技术,比如基于内核的虚拟机(KVM),Xen(Barham等2003),或者VMware,都是由基于宿主操作系统实现的虚拟机监控器组成的,这个监控器提供了虚拟机所有的硬件仿真。如此说来,每个虚拟机都有自己专属的操作系统,这是和其它虚拟机完全隔离开来的。Linux容器的方式是一种被称为操作系统级虚拟化的技术。操作系统级虚拟化会使用隔离用户空间实例的概念来创建一个物理机器资源的分区。本质上而言,这种方法则不再需要基于hypervisor的虚拟化技术中所需的客户操作系统了 。也就是说,hypervisor工作于硬件抽象层,而操作系统级虚拟化工作于系统调用层。然而,给用户提供的抽象是指每个用户空间实体都会运行自己八专属的独立的操作系统。操作系统级虚拟化的不同实现会略有不同,Linux-VServer是工作于chroot之上的,而OpenVZ则是工作于内核命名空间上。Mesos使用的是LXC,它通过cgroups(进程控制组)来进行资源管理,并使用内核命名空间来进行隔离。Xavier等人(2013)对它做了一份详细的性能评估报告,结果如下:[1]

 

  • 从测试CPU性能的LINPACK基准测试(Dongarra 1987)来看,LXC的方式要优于Xen。
  • 进行STREAM基准测试的时候,Xen的内存开销要明显大于LXC(接近30%),而后者能提供接近原生的性能表现。
  • 进行IOzone基准测试时,LXC的读,重复读,写,重写操作的性能接近于本机的性能,而Xen会产生明显的开销。
  • 使用LXC进行NETPIPE基准测试的网络带宽性能接近本机性能,而Xen的开销几乎增加了40%。
  • 由于使用了客户机操作系统,在Isolation Benchmark Suite (IBS)测试中,LXC的隔离性与Xen相比要较差。一个称为fork炸弹(fork bomb)的特殊测试(它会不断地重复创建子进程)表明,LXC无法限制当前创建的子进程数。

容错性

Mesos为主节点提供容错的方式是使用zookeeper(Hunt 等2010)的热备用配置来运行多个主节点,一旦主节点崩溃的话,就会选举出新的主节点。主节点的状态由三部分组成——它们分别是,活动从节点,活动框架,以及运行任务列表。新的主节点可以从从节点和框架调度器的信息中重构自身的状态。Mesos还会将框架执行器及任务报告给对应的框架,框架可以根据自身的策略来独立地处理失败。Mesos还允许框架注册多个调度器,一旦主调度器失败了,可以去连接从调度器。然而,框架得确保不同调度器的状态是同步的。

[1] 熟悉UNIX操作系统的读者会记得,chroot是一个改变当前工作进程树根目录的命令,它会创建一个叫”chroot监狱”的环境来提供文件级别的隔离。 

时间: 2024-09-11 11:26:30

颠覆大数据分析之Mesos:集群调度及管理系统的相关文章

颠覆大数据分析之Spark弹性分布式数据集

颠覆大数据分析之Spark弹性数据集 译者:黄经业    购书 Spark中迭代式机器学习算法的数据流可以通过图2.3来进行理解.将它和图2.1中Hadoop MR的迭代式机器学习的数据流比较一下.你会发现在Hadoop MR中每次迭代都会涉及HDFS的读写,而在Spark中则要简单得多.它仅需从HDFS到Spark中的分布式共享对象空间的一次读入--从HDFS文件中创建RDD.RDD可以重用,在机器学习的各个迭代中它都会驻留在内存里,这样能显著地提升性能.当检查结束条件发现迭代结束的时候,会将

颠覆大数据分析之结论

颠覆大数据分析之结论 译者:吴京润    购书 随着Hadoop2.0到来--被称作YARN的Hadoop新版本--超越Map-Reduce的思想已经稳固下来.就像本章要解释的,Hadoop YARN将资源调度从MR范式分离出来.需要注意的是在Hadoop1.0,Hadoop第一代,调度功能是与Map-Reduce范式绑定在一起的--这意味着在HDFS上惟一的处理方式就是Map-Reduce或它的业务流程.这一点已在YARN得到解决,它使得HDFS数据可以使用非Map-Reduce范式处理.其含

集群调度框架的架构演进之路

这篇博客是关于大型机群任务调度系列的第一篇,资源调度在Amazon.Google.Facebook.微软或者Yahoo已经有很好实现,在其 它地方的需求也在增长.调度是很重要的课题,因为它直接跟运行集群的投入有关:一个不好的调度器会造成低利用率,昂贵投入的硬件资源被白白浪费.而光靠它 自己也无法实现高利用率,因为资源利用相抵触的负载必须要仔细配置,正确调度. 架构演进 这篇博客讨论了最近几年调度架构如何演进,为什么会这样.图一演示了不同的方法:灰色方块对应一个设备,不同颜色圈对应一个任务,有"S

颠覆大数据分析之第二章结束语

颠覆大数据分析之第二章结束语 译者:黄经业    购书 本章讨论了一些业务场景,以及它们在BDAS框架中的实现.同时还介绍了什么是BDAS框架,并重点介绍了Spark, Shark,以及Mesos.Spark在那些涉及到优化的场景中非常有用--比如说Ooyala希望基于约束条件来动态地选择最优的CDN,以便提升视频的用户体验.必须注意的是,正如第一章所说的,众所周知,约束及变量过多的优化问题是很难在Hadoop MR中解决的.随机法要更适合Hadoop.不过你应当时刻牢记一点,Hadoop很难解

[译]集群调度架构的变革

原文地址:http://www.firmament.io/blog/scheduler-architectures.html 集群调度器是现代基础设施很重要的组件,尤其在最近几年有很大发展.架构从单体应用的设计进化成更灵活,分散的,分布式的设计.但是,目前很多开源能提供的还是单体应用或缺了关键特性.这些特性对于真实世界的用户很重要,因为他们需要很高的使用率. 这是我们发布的第一篇关于在大集群上进行任务调度的系列文章,那些在亚马逊,谷歌,facebook,微软或雅虎实际在使用的.调度是一个重要的话

颠覆大数据分析之Storm简介

颠覆大数据分析之Storm简介 译者:吴京润    购书 之前我们已经极为简单的介绍了Storm.现在我们要对它做一个更详细的了解.Storm是一个复杂事件处理引擎(CEP),最初由Twitter实现.在实时计算与分析领域,Storm正在得到日益广泛的应用.Storm可以辅助基本的流式处理,例如聚合数据流,以及基于数据流的机器学习(译者注:原文是ML,根据上下文判断,此处应是指机器学习,下文相同不再缀述).通常情况,数据分析(译者注:原文为prestorage analytics,意义应是保存分

颠覆大数据分析之Storm的设计模式

颠覆大数据分析之Storm的设计模式 译者:吴京润    购书 我们将要学习如何实现基于Storm的一些通用设计模式.设计模式,我们也称之为软件工程意识,是在给定上下文环境中,针对觉设计问题的可重用的通常解决方案.(Gamma et al. 1995).它们是分布式远程过程调用(DRPCs),持续计算,以及机器学习. 分布式远程过程调用 过程调用为单机运行的程序提供了一个传输控制与数据的灵巧机制.把这一概念扩展到分布式系统中,出现了远程过程调用(RPC)--过程调用的概念可以跨越网络边界.客户机

颠覆大数据分析之Spark VS分布式共享内存系统

颠覆大数据分析之Spark VS分布式共享内存系统 译者:黄经业    购书 Spark可以看作是一个分布式共享集合系统,和Stumm和Zhou (1990)以及Nitzber和Lo (1991)所提到的传统的分布式共享内存(DSM)系统则略有不同.DSM系统允许单独读写内存,而Spark只允许进行粗粒度的RDD转换.尽管这限制了能够使用Spark的应用种类,但它对于实现高效的容错性却很有帮助.DSM系统可能会需要检查点相互协作来完成容错,比如说使用Boukerche等人(2005)所提出的协议

集群调度技术研究综述

1  引言 什么是调度?个人理解最初的调度是和时间有关的.时间作为唯一的不可逆转的资源,一般是划分为多个时间片来使用(如下图所示).就计算机而言,由于CPU的速度快的多,所以就有了针对CPU时间片的调度,让多个任务在同一个CPU上运行起来.这是一个假象,某一时刻CPU还是单任务运行的. 后来为了在同一时间进行更多的任务,需要在同一时间内干多件事情.如果多个人或者多个处理器为了完成一个任务目标一起工作,就需要一个协调者.这就是一个分布式系统,就单个数据中心或者小范围来说,就是集群.如果让一个分布式