统一资源管理与调度平台(系统)介绍

标签: 下一代MapReduce(YARN/MRv2) Hadoop Mesos yarn | 发表时间:2012-03-30 21:32 | 作者:Dong
出处:http://dongxicheng.org
作者: Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明
网址: http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/

1. 背景

随着互联网的高速发展,基于数据密集型应用的计算框架不断出现,从支持离线处理的MapReduce,到支持在线处理的Storm,从迭代式计算框架Spark到流式处理框架S4,…,各种框架诞生于不同的公司或者实验室,它们各有所长,各自解决了某一类应用问题。而在大部分互联网公司中,这几种框架可能都会采用,比如对于搜索引擎公司,可能的技术方案如下:网页建索引采用MapReduce框架,自然语言处理/数据挖掘采用Spark(网页PageRank计算,聚类分类算法等,【注】Spark现在不太成熟,很少有公司尝试使用),对性能要求很高的数据挖掘算法用MPI等。考虑到资源利用率,运维成本,数据共享等因素,公司一般希望将所有这些框架部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,这样,便诞生了资源统一管理与调度平台,典型代表是Mesos和YARN。

本文总结了资源统一管理与调度平台产生背景以及它们所应具有的特点,并对比了当前比较有名的资源统一管理与调度平台Mesos和YARN。

2. 资源统一管理和调度平台具有的特点

(1)支持多种计算框架

资源统一管理和调度平台应该提供一个全局的资源管理器。所有接入的框架要先向该全局资源管理器申请资源,申请成功之后,再由框架自身的调度器决定资源交由哪个任务使用,也就是说,整个大的系统是个双层调度器,第一层是统一管理和调度平台提供的,另外一层是框架自身的调度器。

资源统一管理和调度平台应该提供资源隔离。不同的框架中的不同任务往往需要的资源(内存,CPU,网络IO等)不同,它们运行在同一个集群中,会相互干扰,为此,应该提供一种资源隔离机制避免任务之间由资源争用导致效率下降。

(2)扩展性

现有的分布式计算框架都会将系统扩展性作为一个非常重要的设计目标,比如Hadoop,好的扩展性意味着系统能够随着业务的扩展线性扩展。资源统一管理和调度平台融入多种计算框架后,不应该破坏这种特性,也就是说,统一管理和调度平台不应该成为制约框架进行水平扩展。

(3)容错性

同扩展性类似,容错性也是当前分布式计算框架的一个重要设计目标,统一管理和调度平台在保持原有框架的容错特性基础上,自己本身也应具有良好的容错性。

(4) 高资源利用率

如果采用静态资源分配,也就是每个计算框架分配一个集群,往往由于作业自身的特点或者作业提交频率等原因,集群利用率很低。当将各种框架部署到同一个大的集群中,进行统一管理和调度后,由于各种作业交错且作业提交频率大幅度升高,则为资源利用率的提升增加了机会。

(5)细粒度的资源分配

细粒度的资源分配是指:资源分配对象是任务(task),不是作业(job),框架(framework)或者应用程序(application)。这至少会带来以下几个好处:高资源利用率,高响应时间和好的locality。

3. 当前比较有名的开源资源统一管理和调度平台

当前比较有名的开源资源统一管理和调度平台有两个,一个是Mesos,另外一个是YARN,下面依次对这两个系统进行介绍。

3.1 Mesos

Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。

总体上看,Mesos是一个master/slave结构,其中,master是非常轻量级的,仅保存了framework(各种计算框架称为framework)和mesos slave的一些状态,而这些状态很容易通过framework和slave重新注册而重构,因而使用了zookeeper解决mesos master单点故障问题。

Mesos master实际上是一个全局资源调度器,采用某种策略将某个slave上的空闲资源分配给某一个framework,各种framework通过自己的调度器向Mesos master注册,以接入到Mesos中;而Mesos slave主要功能是汇报任务的状态和启动各个framework的executor(比如Hadoop的excutor就是TaskTracker)。

3.2 YARN

YARN是下一代MapReduce,即MRv2,是在Hadoop基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持初MapReduce之外的其他计算框架而提出的。它完全不同于Hadoop MapReduce,所有代码全部重写而成。整个平台由Resource Manager(master,功能是资源分配)和Node Manager组成(slave,功能是节点管理)。较于HadoopMapReduce,其最大特点是将JobTracker拆分成Resource Manager和Application Master,其中Resource Manager是全局的资源管理器,仅负责资源分配(由于Resource Manager功能简单,所以不会严重制约系统的扩展性),而Application Master对应一个具体的application(如Hadoop job, Spark Job等),主要负责application的资源申请,启动各个任务和运行状态监控(没有调度功能)。

4. Mesos与YARN比较

Mesos与YARN主要在以下几方面有明显不同:

(1)框架担任的角色

在Mesos中,各种计算框架是完全融入Mesos中的,也就是说,如果你想在Mesos中添加一个新的计算框架,首先需要在Mesos中部署一套该框架;而在YARN中,各种框架作为client端的library使用,仅仅是你编写的程序的一个库,不需要事先部署一套该框架。从这点上说,YARN运行和使用起来更加方便。

(2)调度机制

Mesos采用了双层调度策略,第一层是Mesos master将空闲资源分配给某个框架,而第二层是计算框架自带的调度器对分配到的空闲资源进行分配,也就是说,Mesos将大部分调度任务授权给了计算框架;而YARN是一个单层调度架构,各种框架的任务一视同仁,全由Resource Manager进行统一调度。总结来说,Mesos master首先完成粗粒度的资源分配,即:将资源分配给框架,然后由框架进行细粒度的资源分配;而Resource manager直接进行细粒度的分配,即:直接将资源分配给某个任务(Task)。

其他各个特性对比如下表:

5. Mesos与YARN发展情况

个人认为Mesos和YARN均不成熟,很多承诺的功能还未实现或者实现得不全,但总体看,它们发展很快,尤其是YARN,在去年年末推出Hadoop-0.23.0后,近期又推出Hadoop-0.23.1。随着各种计算框架(如Spark,S4,Storm等)的日趋成熟,一个统一的资源管理和调度平台将不可或缺。

6. 参考资料

(1)Mesos论文: Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center. B. Hindman, A. Konwinski, M. Zaharia, A. Ghodsi, A.D. Joseph, R. Katz, S. Shenker and I. Stoica,  NSDI 2011, March 2011.

(2) Mesos官网: http://incubator.apache.org/mesos/index.html

(3)YARN官网: http://hadoop.apache.org/common/docs/r0.23.0/index.html

(4)下一代Apache Hadoop MapReduce框架的架构:

http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/

原创文章,转载请注明: 转载自 董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/


Copyright © 2008
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)

相关 [统一 资源 管理] 推荐:

统一资源管理与调度平台(系统)介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/. 随着互联网的高速发展,基于数据密集型应用的计算框架不断出现,从支持离线处理的MapReduce,到支持在线处理的Storm,从迭代式计算框架Spark到流式处理框架S4,…,各种框架诞生于不同的公司或者实验室,它们各有所长,各自解决了某一类应用问题.

Profile管理用户资源

- - ITeye博客
1.ProFile的概述. Profile是Oracle提供的一种针对用户资源使用和密码管理的策略配置. 借助Profile,可以实现特定用户资源上的限制和密码管理规则的应用. 在实际的应用中,Profile可以帮助我们实现很多应用层面比较困难实现的需求. Profile是Oracle安全策略的一个组成部分.

Oracle数据库资源管理

- - 技术改变世界 创新驱动中国 - 《程序员》官网
一般来说,Oracle数据库都属于中大型的系统,这类系统的用户会话(Session),小则一两百,多则上千,这些用户会话要求Oracle数据库执行的任何指令都需要耗费系统资源,而系统资源毕竟是宝贵且有限的,一旦突然涌进大量的用户会话,对于有限的资源可能会略显不足. 但这些会话必定有轻重缓急之分,对于重要且紧急的用户会话需求理当获得多一点的系统资源,对于一些不重要或不紧急的用户会话,则可以使用较少的系统资源慢慢处理.

解析Google集群资源管理系统Omega

- - 唐福林-博客雨
Google的第一代/第二代集群(资源)管理系统被称为Borg,Borg设计细节因零零星星出现在各种文章中而知名,但一直未公开(比如发一篇paper). 然而,我们可从腾讯公布的Torca(Torca是google华人老员工朱会灿加入搜搜后,仿照google borg开发的资源管理系统, 链接是:“Torca:Typhoon上的分布式集群调度系统”)设计文档中可猜测一二.

Hadoop 1.0与Hadoop 2.0资源管理方案对比

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/. 本博客的文章集合: http://dongxicheng.org/recommend/.

使用Spring进行统一日志管理 + 统一异常管理

- - 编程语言 - ITeye博客
统一日志和异常管理配置好后,SSH项目中,代码以往散落的log.info() 和 try..catch..finally 再也不见踪影.  * 由Spring AOP调用 输出异常信息,把程序异常抛向业务异常 .         // 在后台中输出错误异常异常信息,通过log4j输出.         // 在这里判断异常,根据不同的异常返回错误.

快盘推出云桥技术:一体化操作整合资源管理器

- Woooon - cnBeta.COM
9月19日,金山办公软件在北京召开新产品沟通会暨合作伙伴大会,金山快盘也借势高调公布了一项具有全球首创意义的技术――云桥技术,即嵌入式一体化操作界面技术. 在即将推出的新版快盘中,本地和服务器的文件都统一到一个可见界面中进行管理,此界面以嵌入的方式实现了和资源管理器的无缝整合,用户在快盘中对一份 文件进行常规操作时,就能通过该界面看到后台服务器对此文件的操作进程和效果,而这种整合在国内外的网盘中实属首例.

[资源]31个国外社会化媒体运营管理工具一览

- - SocialBeta
编译张宇,微博 @inter3i社交媒体分析. 随着企业使用社会化媒体的深入,聚集了越来越多的粉丝,企业也面临了很多单靠人力和创意所不能解决的问题,如有效倾听,大规模的数据挖掘和分析,多账户管理以及效果的评估等,这就需要借助于一些工具,比如国外一些热门的如buddy media,. Hootsuite等,本文就汇集了国外30多家社会化媒体运营管理工具,供参考.

[Tips]以windows的资源管理器当前路径打开一个命令行

- - 译言-电脑/网络/数码科技
你知道在windows的资源管理器中可以快速的打开一个命令行窗口不. 只要在资源管理的地址栏中直接输入cmd,就能打开一个以当前路径为工作目录的命令行窗口. 想免去鼠标操作的话,先用快捷键Alt+D选中地址栏,然后再直接敲cmd就全部搞定. 这样的方法比用AutoHotkey的脚本实现简单了许多. 特别提醒:你还能在资源管理器的地址栏启动其他程序,比如写字板(notepad).

Tomcat7集群共享Session 基于redis进行统一管理

- - 行业应用 - ITeye博客
      很多时候,生产环境,需要多个tomcat协作,那么session的统一管理是一个首先需要解决的问题. session的统一管理有很多解决方案,比如存储至数据库、memcache、redis. 那么我想给大家介绍的是将session存储至redis这个方案.        先要感谢开源项目 tomcat-redis-session-manager,感谢作者.