原文地址:http://www.firmament.io/blog/...

混合架构 是最近出现的致力于通过组合单体或共享态的设计来解决全分布架构的缺点。一般这样做是ok的 - 比如,在Tarcil(http://dl.acm.org/citation.cf... ), Mercury(https://www.usenix.org/confer... ), 和Hawk(https://www.usenix.org/confer... ) - 有两种调度路径: 一个分布式的来处理负载(如,很短的的任务,或低优先级的批处理任务), 另一个中心式的来处理其他任务。图1e展示了这种设计。每一个混合调度器的行为都与以上架构描述的部分相同。在实际的实践中,目前据我所知还没有混合调度器在生产环境中部署。

在实践中意味着什么?

以上讨论的不同的调度架构并不只是一个学术课题,尽管他们确实在研究论文出现。作为一个关于Borg,Mesos和Omega论文从工业界角度的扩展的讨论,可以看看Andrew Wang的精彩博文(http://umbrant.com/blog/2015/... )。此外,很多系统的讨论都部署在大型企业(微软的Apollo,Google的Borg,Apple的Mesos)的生产环境设定,并且他们启发了其他可用的开源项目。

最近,许多集群开始运行容器,所以很多关注容器的“编排框架”出现了。这些跟Google和其他公司称为“集群管理器”很像。不管怎样,一些关于调度器讨论的细节已经融入了这些框架和他们的设计规范,一般他们的关注点都是在面向用户的调度API(由Armand Grillet报道 http://armand.gr/static/files... ,其对比了Docker Swarm,Mesos/Marathon, Kubernetes default scheduler)。此外,很多用户并不知道调度器架构之间的差异,也不知道哪一个架构适合他们的应用。

图2 展示了开源编排框架的概要,他们的调度器的架构和支持的特性。在表格底部,我们也加入了Google和微软的闭源系统。资源粒度列指出了调度器分配任务到一个固定尺寸的slot,还是会根据多个维度(CPU,内存,磁盘I/O贷款,网络带宽等)来分配资源。

一个决定合适调度架构的关键点就是你的集群是否运行了混合的负载。这种case,举例来说,就是当既有在线服务(原文:front-end services) (web负载均衡服务与memcached)和批处理数据分析(MapReduce或Spark)的情况。为了提高使用率这种类型很有意义,但不同的应用有不同的调度需求。在一个混合式的设定中,单体调度器只能得到次优解,因为单一逻辑不能以每个应用为基础进行调整,双层或共享态调度器可以提供更好的收益。

大多数面向用户的在线业务负载设计为将所有资源用来服务每个容器的峰值需求,但这样会导致他们的使用率低于分配到的资源。这样的情况下,用低优先级的负载任务(保证QoS)来优化被过度订阅的资源成为优化有效集群的关键。Mesos是目前唯一支持过度订阅的开源系统,Kubernetes有一个提案(http://kubernetes.io/v1.1/doc... )来加入这个特性。我们期望未来这块领域会有更多的活动,因为目前很多集群的使用率实际上低于Google Borg集群报道(http://dl.acm.org/citation.cf... )的60-70%。我们会继续在今后发布关于容量规划,过度订阅,高效机器使用率的内容。

最后,特定的分析和OLAP类型的应用(如,Dremel或SparkSQL查询)可以从全分布式调度器受益。但是,全分布式调度器(如Sparrow)有很严格的特性集限制,它在任务负载都是同一个类型时有很好的性能(如,所有的任务大约在同一个时间段运行),set-up times are low(如,任务被调度到长时间运行的worker, 像YARN中的MapReduce应用级别任务),任务会大量产生(如,许多调度判断会在很短时间产生)。我们会在这个系列的下一个博文更细的讨论下为何全分布式调度器- 混合调度器的分布式组件只在这些应用中有意义。现在,分布式调度器比其他调度器更简单,不支持多资源维度,过度订阅,或重新调度。

大体上,图2证明了开源框架还有一段路要走,直到它们可以支持闭源系统的以上高级特性,这是行动的召唤:由于缺失的特性,糟糕的使用率,不可靠的任务性能,吵杂的邻居导致被半夜叫醒,为一些用户需求定制的黑科技。

不过,还是有一些好消息:今天很多框架还是单体调度器,他们开始向更弹性的设计变化。 Kubernetes已经开始支持插件化调度器(kube-调度器 pod可以被另一个API兼容的调度器pod替代),很多从V1.2后的调度器(https://github.com/kubernetes... ),开始支持自定义的策略(https://github.com/kubernetes... )。Docker Swarm可能-按我的理解-也会增加插件化调度器的支持。

最后,推荐一本书,内容均为阿里工程师一手线上问题处理案例,值得一看。
有关阿里VIPServer软负载的问题欢迎与我交流。

发布会详情与目录请看:
《逆流而上:阿里巴巴技术成长之路》重磅发售


本文来自微信公众号「麦芽面包」,id「darkjune_think」
转载请注明。长按图片识别二维码关注。
交流Email: zhukunrong@yeah.net

[译]集群调度架构的变革 (四)相关推荐

  1. 集群调度架构的变革 (二)

    二级调度架构 通过隔离资源获取与任务来解决这个问题.这样任务调度逻辑可以针对特定的应用,这也可以保持在集群间共享的能力.Mesos的集群管理在这方面是先驱, 同时YARN支持一部分功能.在Mesos, ...

  2. 集群调度框架的架构演进过程

    原文:The evolution of cluster scheduler architectures 作者:Malte Schwarzkopf 之前组会上,有幸与大家探讨 Firmament: Fa ...

  3. 十大主流集群调度系统大盘点

    众所周知,集群调度系统是现代数据中心举足轻重的组件,一个好的调度器,能提高集群资源利用率,实现自动化部署和高可用,节约用户投资,"让开发者最大可能地把精力集中到上层业务逻辑上".考 ...

  4. 调度框架学习笔记(3)—— 集群调度框架的架构演进过程

    本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...

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

    http://www.infoq.com/cn/articles/scheduler-architectures 编者按 集群架构是现代数据中心非常重要的组件,在最近几年中有长足发展.架构也从单体式设 ...

  6. 分布式和集群的架构套路总结

    本文成于2020年3月14日 参考:原文 文章目录 分布式和集群名词解释 使用分布式的心路历程 常见的分布式集群架构 1. 纯负载均衡形式(集群方向) 2. 领导选举型(分布式方向) 3. 区块链型( ...

  7. 快手超大规模集群调度优化实践

    导读:随着公司业务的快速发展,离线计算集群规模和提交的作业量持续增长,如何支撑超大规模集群,如何满足不同场景的调度需求成为必须要解决的问题.基于以上问题,快手大数据团队基于YARN做了大量的定制和优化 ...

  8. quartz集群调度机制调研及源码分析---转载

    quartz2.2.1集群调度机制调研及源码分析 引言 quartz集群架构 调度器实例化 调度过程 触发器的获取 触发trigger: Job执行过程: 总结: 附: 引言 quratz是目前最为成 ...

  9. k8命令,pod的启动流程与资源文件书写,k8s集群调度

    目录 一.常用命令及kubect介绍 1.kubect介绍 1)语法格式: 2)命名空间的概述 3)查看命名空间 4)查看命名空间中的资源对象 2.查用排错命令 1)查询资源文件 2)查看资源详细信息 ...

最新文章

  1. python截图保存到内存卡_Python画月饼,云上过中秋,天池Python入门案例系列赛开启...
  2. mysql utf-8长度_MySQL VARCHAR长度和UTF-8?mysql
  3. redis 可视化客户端工具
  4. 迅雷极速版任务出错的解决办法(亲测可用)
  5. App中自动生成二维码
  6. 如何学习Photoshop
  7. 小白必看:合理搭建巨量引擎账户结构要点总结!
  8. 安卓虚拟键盘_安卓这些年变化多惊人?那些老玩家才懂的回忆
  9. “源”来是你-Vol.37 | 知名开源企业StreamNative 招募开源社区运营和开源布道师!...
  10. html标签怎么制作足迹地图,用百度地图API做个人足迹地图教程
  11. 敏捷已死:一场程序员们历经20年的失败反叛
  12. Python,关于字符串间隔分割的while、for代码测试,近乎完美
  13. 第三方代付入帐是什么意思
  14. TypeError: classification_report() takes 2 positional arguments but 3 were given的解决方案
  15. 反射是什么?反射的常用方法
  16. 浪潮服务器性能参数,浪潮高密度服务器i24
  17. html登录号如何显示用户名,HTML更改登录标签,登录后用户名
  18. 最小生成树:克鲁斯卡尔算法+普里姆算法
  19. 德云社相声的信息结构
  20. Tapdata PDK 生态共建计划启动 MongoDB、Doris、OceanBase、PolarDB等十余家厂商首批加入

热门文章

  1. html5 端午节 龙舟,端午节赛龙舟的作文(精选10篇)
  2. 需求分析挑战之旅(疯狂的订餐系统)(3)——背景-需要-需求规格
  3. play-framework的安装配置(OS X和windows版)
  4. 屡陷丑闻的 Facebook,试图靠 AI Bot 管住员工的嘴
  5. NHibernate3剖析:Configuration篇之SessionFactory lambda配置
  6. 网课男生穿搭技巧尔雅答案 吴小吟
  7. 计算机网络工程主要是做什么,网络工程专业是什么
  8. Java实现阿拉伯数字转大写中文
  9. RroductFlavors 多渠道打包 配置不同的包名、桌面图标、引导页、java代码等
  10. 药剂师揭露中药行业内幕:代煎多偷工减料