集群资源调度系统简介与galaxy资源调度系统简介

来源:互联网 发布:知柏地黄丸吃多久见效 编辑:程序博客网 时间:2024/05/01 09:27

原文链接:http://www.alidata.org/archives/2439

随着公司业务的飞速发展,集群规模的逐步扩大,各计算系统,存储系统,应用系统也随着业务的发展,一个接一个的被创造了出来。但集群规模扩大以后,却带来很多问题,如自动化部署,集群整体利用率偏低等问题也逐步的暴露出来。所以,迫切的需求一套集群资源调度系统来解决这些问题。各大互联网公司也相继搞出了一些系统,如omega(google),yarn(apache社区,hadooop下面的一个分支,开源),mesos(twitter,开源),torca(腾讯soso), Corona(Facebook)。

 

一.为什么要做资源调度系统

资源调度系统主要是为了解决上述提到的两个问题,同时也给业务系统或计算系统带来了其它好处。集群资源调度系统对底层硬件进行了一层抽象,屏蔽了硬件的异构性(目前,各系统主要是对CPU, MEMORY, IO, DISK进行资源抽象),对上层各种应用或服务提供资源统一管理和调度。从云计算的角度来划分,属于IAAS(Infrastructure-as-a-service)。总结起来,这样的系统主要带来三点好处:

  1. 提升资源利用率

不同业务都有自己的峰值业务需求,如果是每个业务集群单独部署,则每个业务间都是隔离封闭的,资源无共享,无法错峰交谷。集群资源调度系统的引入可以很好的解决这一问题。多业务之前可以做到资源共享,并有弹性管理机制,这样就可以根据不同业务的需要,灵活的进行调度,提高了资源利用率

  1. 自动化部署

相信很多开发同学和PE同学都有过这样的经历:新系统发布上线,需要制定各种发布部署方案,宕机后的恢复方案,监控方案等。如果系统不是很成熟,可能这些工作都得手工来完成,即使系统已经做到很成熟了,不同的系统可能也是多套部署系统,开发成本,运维成本也是非常高的。

  1. 容灾

做分布式系统的同学都清楚,对于单个服务器来说,出故障的概率是比较小的,但在对于大型分布式环境中,故障就要作为一种理所当然的常态了,没有无故障的侥幸存在。一般分布式系统设计的时候,都会尽量去避免单点问题的出现,但是如果是机架,机柜,甚至是机房出问题怎么办?利用集群资源调度系统能够以较低的代价解决这类问题。

 

 

二.三代集群调度系统

在Omega的论文里描述了Google经历了三代资源调度系统,并探讨了各自的优势点,这里对论文的内容进行一个简单的总结

这三代资源调度系统分别属于这三种类型:Monolithic, Two-levelShared state

  1. Monolithic scheduler(中央式调度器)

特点:资源的调度和作业的管理功能全部放到一个进程中完成,开源界典型的代表是Hadoop JobTracker的实现

优点:结构简单,实现难度相对较低

缺点:

a)         集群规模受限

b)         很难引入新的调度策略(比如想在原有调度策略中引入流式作业)

c)         资源组管理逻辑复杂,需要嵌入到调度系统中

 

Omega论文中提到了一种对中央式调度器的优化方案:将每种调度策略放到单独一个路径(模块)中,不同的作业由不同的调度策略进行调度。这种方案在作业量和集群规模比较小时,能大大缩短作业相应时间,但由于所有调度策略仍在一个集中式的组件中,整个系统扩展性没有变得更好。

  1. Two-level scheduler(双层调度器)

针对Monolithic的问题,双层调度器是一种很容易想到的解决方法,典型的分布式系统中分层思想。

 

特点:

a)       上层是一个非常轻量的Monolithic调度系统,负责资源分配,但不侵入应用的调度策略。

b)       下层是具体某个应用程序的调度器,如hadoop, storm, spark, mpi等

c)       典型系统mesos

优点:

a)       两层调度的架构可以做到”大集群”,1万到10万台

b)       减小“中心节点”的压力,由原来的一个“中心”,变成二层“中心”

c)       同一个集群中,多种应用的接入,多种框架混部,提高分布式集群的利用率

缺点:

a)       各应用无法感知集群整体的使用状况,只能等待上层调度推送信息

b)       资源分配采用轮询,ResourceOffer机制(mesos),在分配过程使用悲观锁,并发粒度小,响应稍慢

c)       缺乏一种有效的竞争或优先抢占的机制

  1. Shared-state scheduler(共享状态的双层调度器)

为了克服双层调度器存在的问题,google开发了下一代资源调度系统Omega。

特点:

a)       改进版的Two-level Scheduler

b)       将Two-level Scheduler中的共享数据进行全局持久化,任何应用都可以看到集群资源信息

c)       资源申请采用乐观锁(通过MVCC实现),优先级控制,提高并发

 

由于无法了解到Omega的细节,只能从论文里提供的信息进行判断,Omega最大的改进点就是将集群的使用信息存放到了一个全局共享存储中,各应用可以获取到整个集群的信息。其分层策略与Two-level是相同的,但是资源分配的过程中会引入些全局资源因素,作为决策因子,相对Two-level来说,调度策略要复杂一点。

 

 

三.Two level Scheduler的典型代表—-mesos

 

Apache Mesos由两种系统组件组成:Mesos-master, Mesos-slave

Master是整个系统的核心,是一个轻量的Monolithic scheduler,负责接入mesos的各种framework(通过frameworks_manager来管理)和管理slave,并将slave上的资源按自定义策略分配给framework

Slave负责接收并执行Master的命令,管理节点上的task,并为各task分配资源。同时,slave也会将当前机器资源汇报给Master进行分配。

 

让我们先通一个实例来看一下,Mesos是如何为应用分配资源的。

图中的四个步骤是典型的一个任务从提交,到最终通过mesos分配好资源,并将任务运行在集群中的一个过程。

  1. S1向master汇报:“我这里有4个cpu, 4G内存,可以给大家使用了”
  2. Master的开始轮询F1, F2,先询问F1:“s1有4个cpu,4G内存,这个资源你要不要,要多少?”这时,F1回答:“s1的资源我全要了”
  3. 客户端向F1提交了两个任务,task1需要2个2cpu,1G内存,task2需要1个cpu,2G内存,而已经接受的s1正好有这些资源,通知master,在s1上执行task1和task2
  4. Master接到起worker请求,通知s1,调用在s1上的f1的executor起动执行进程

四.资源调度系统上的几类应用

不同类型的应用系统对资源的要求有很大的差别

  1. 快短任务(hadoop, 有可能只持续几分钟)
  2. 周期调度(搜索,garuda,按天【周,月】调度)
  3. 常驻任务(storm, galaxy)

 

五.galaxy流计算服务化平台的资源调度系统

目前流式计算是业界研究的一个热点,同时集团内部各类流式计算应用得到迅猛发展。在近期的双11,双12等活动期间采用流式计算的实时应用非常抢眼。storm,s4等主要流式计算引擎,提供的编程模型,存在开发成本,开发效率的问题。对于数据类应用开发,SQL是用户最熟悉且较容易上手的一门语言。如何能让流计算也具备SQL编程接口,对用户提供服务化方式开发,维护,升级自己的流计算应用?galaxy为用户提供了一套非常好的解决方案。有以下特点:

1.     开发成本、开发效率:

a)      90%需求SQL实现;

b)       抽象语义层(SQL无法满足,可基于语义层提供更抽象的接口);

c)       封装中间存储层;

2.     集群服务化:多集群用户不感知;可运维迁移任务;

3.     自动化测试体系:包含数据质量;

4.     在云端流程整合;

 

Galaxy为什么需要自己的资源调度系统呢?

  1. Galaxy的定位是一个流计算的服务化平台,目的是支持“万”级别的任务数
  2. Galaxy目前选用的计算引擎,从引擎设计和实现来看,无法做到大集群(千台以上),多租户
  3. 在阿里生产环境中,有多个机房,不同的业务可能需要不同的资源组。单个计算集群显然无法满足需求。为了解决这个问题,galaxy采用的是多集群的方案,每个资源组分配N个小的计算集群。
  4. 为了能够使多个计算集群做到资源共享且做到任务隔离,在galaxy内部,也设计了一套小型Two-level调度系统,相对于mesos, yarn,omega要轻量的多。

 

Galaxy资源调度系统的设计与实现

目前galaxy资源调度系统正在紧张开发过程中,预计在8月份,第一个版发布。到时候会写一遍文章详细介绍galaxy资源调度系统的设计与实现

 

六.总结

Omega, mesos, yarn这类资源调度系统为我们设计和实现分布式系统时,带来了许多新的启发,随着互联网的发展,大数据时代的到来,在业务压力的驱使下,这类系统必定会得到飞速的发展。

 

 

七.参考文献

  1. Omega: flexible, scalable schedulers for large compute clusters:http://eurosys2013.tudos.org/wp-content/uploads/2013/paper/Schwarzkopf.pdf
  2. Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center:https://www.usenix.org/legacy/event/nsdi11/tech/full_papers/Hindman_new.pdf
  3. 解析Google集群资源管理系统Omega: http://ju.outofmemory.cn/entry/21397
  4. Torca:Typhoon上的分布式集群调度系统: http://djt.qq.com/bbs/thread-29998-1-1.html
  5. Yarn: http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新注册的微信号被实名认证了怎么办 他出轨对我冷暴力孩子小怎么办 给情人发红包被老婆发现了怎么办一 情人和我出轨被他老婆发现了怎么办 情人老婆再次发我的存在怎么办 给情人还了账他老婆不承认怎么办 天堂1游戏限制IP登录次数怎么办 网易手机将军令绑不了太多号怎么办 当发生噩梦、梦魇等情况时该怎么办 出车祸后全保对方在家里来闹怎么办 轮胎正面凹槽被划了口子怎么办 机票已经买完了护照丢了怎么办 买完机票后护照丢了怎么办 填简历时籍贯写了汉怎么办 深圳公租房住满5年后怎么办 深圳公租房住满6年后怎么办 没单位了个人不想交社保怎么办 北京公租房住满5年后怎么办 部落冲突怎样看账号密码忘了怎么办 摩托车闯红灯4次扣24分怎么办 星巴克金星级会员到期了怎么办 2018年驾照到期换证色弱怎么办 怀孕5个月咳嗽有痰怎么办 广州驾照换证体检视力不过怎么办 驾照12分扣完了怎么办费用标准 驾照体检出绿色盲不能补证怎么办 在交警队驾驶员陈述笔录写错怎么办 学驾照做体检把电话填错了怎么办 驾考中心考场停考预约的考试怎么办 口令卡绑定第一次身份证输错怎么办 第一次去医院看病没带身份证怎么办 考科目二紧张怎么办如何消除紧张 考科目三紧张怎么办如何消除紧张 我的驾考准考证和发票丢了怎么办 科目二预约考试下一步点不了怎么办 护士资格证未注册过期没注册怎么办 上海护士延续体检有乙肝携带怎么办 护士资格证从诊所变更到医院怎么办 杭州驾考预约面授没有去怎么办 在外地考的驾驶证丢了怎么办 身份证和驾驶证在外地丢了怎么办