今天阅读了一个berkeley学生Andrew Konwinski的有关集群资源调度的技术报告,其中对于目前现有集群调度技术的分类,我觉得说的很好,另外,它还介绍了一种模拟实验的蒙特卡洛方法,现在做一个摘要与总结,报告链接:http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-273.html

里面还说了一个比较重要的特点是,悲观锁和乐观锁:

The pessimistic concurrency control approach is to have the database server lock the row on User A's behalf, so User B has to wait until User A has finished its work before proceeded. We effectively solve the problem by not allowing two users to work on the same piece of data at the same time. It just prevents the conflict.

The optimistic concurrency control approach doesn't actually lock anything - instead, it asks User A to remember what the row looked like when he first saw it, and when it's time to update it, the user asks the database to go ahead only if the row still looks like he remembers it. It doesn't prevent a possible conflict, but it can detect it before any damage is done and fail safely.

动机

目前,大型web服务主要运行在普通服务器集群上面。这个主要是由于(1)更加廉价的计算资源和(2)通过公有云和私有云接口访问这些资源的方便性。这个现象导致了多种编程模型的出现,比如为处理留作业的MapReduce,Dryad,MapReduce Online以及为图计算开发的Pregel和很多其他的系统。

新的计算框架会持续的出现,没有一个单独的框架能满足所有的需求。这个就导致了我们希望在同一个集群中同时运行不同的计算模型,为某个应用选择最好的框架。这个需求就需要一个支持多编程模型的集群资源管理系统,这个系统需要满足一下要求:

可伸缩性:对于节点的数目和能处理的作业到达速率的增长,系统有很好的伸缩性。

灵活性:支持高度异构的混合作业同时运行在普通的集群中。

可用性和可维护性:在集群中方便地兼容新的作业。部署/升级编程框架简答。

错误隔离:隔离不同种作业的错误,防止错误的级联。

资源利用率:提高整个集群资源的利用率。

集群负载的分类

为了达到以上的目的和设计出满足要求的系统,我们需要对目前集群中的作业进行一个分类:

服务任务和终止任务(Service Jobs vs Terminating Jobs)

服务任务是一直运行的程序,比如web服务器和关系数据库。

终止任务类似于批处理程序,它们根据一定的输入进行一定的处理,然后退出。

目前的资源管理系统一般只会处理其中的一种任务。

任务选择率(Task pickiness)

任务可以选择为其提供服务的资源的要求和偏好。

作业弹性(Job elasticity)

可能根据作业不同时间的负载动态的伸缩资源。

任务和作业的持续时间(Job and task duraton)

终止作业可能有不同的持续时间。

任务调度时间敏感性

有的任务会有响应时间的要求,这回影响到用户体验。

集群调度的分类

目前所有的集群调度技术可以以下面的方式分类:

单代理(Monolithic):

集群中仅仅只有一个调度器,它串行的做出所有的调度决策。

这个是目前大多数集群管理系统,比如Hadoop和Torque系统使用的架构,优势在于简单。但是有很多先天的劣势:

1单调度策略,在伸缩性,灵活性和拓展性方面均不好。

对于混合的作业流,这个方式并不能很好适应。批处理式的作业比较适合用非抢占的公平调度而延迟敏感的作业需要使   用优先级抢占策略,这样的架构不能满足这些要求。

2单点故障。

3负载瓶颈。

4Head of line(HOL) blocking饿死现象。

多代理架构

状态分区的调度(Partitioned State Scheduling)

静态分区

优势:没有单点故障,等待调度延迟小,更好的错误隔离。

劣势:劣势主要集中在静态的分区上,比如1)一个超过一个分区的作业就不能运行。2)一个分区可能对于一个小作业来说太大了。3)碎片问题

动态分区

优势:如静态分区,并加上其的劣势。

劣势:需要维护一个元数据服务器,这个元数据服务器需要上锁,可能会有性能开销。

以上的两个部分分区方案就类似于数据库中控制同步的方式中的悲观并发控制。这种方式要求提前就把调度管理域给划分开来。

复制状态的调度(Replicated State Scheduling)

这个调度策略允许调度管理域重叠,比较像数据库中同步控制中的乐观并发控制。

这个架构目前是最灵活的,但是需要更复杂的处理逻辑以及同步的控制。

多代理集群调度:可伸缩性和灵活性相关推荐

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

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

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

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

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

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

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

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

  5. 仓库规模操作系统的背景之集群调度

    前言 本文是Malte Schwarzkopf的博士论文<Operating system support for warehouse-scale computing>一个翻译版本,融入了 ...

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

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

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

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

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

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

  9. CNCF 沙箱项目 OCM Placement 多集群调度指南

    作者: ​邱见|红帽资深软件工程师,Open Cluster Management (OCM) 社区发起人,负责人​ ​郝青|红帽高级软件工程师,Open Cluster Management (OC ...

最新文章

  1. 520这天,我突然意识到,她根本配不上我这么聪明的男人
  2. linux xargs与管道的区别
  3. USB、TTL电平、232电平之间的相互转换
  4. 像个字段相减绝对值_【高考数学】33个知识点+66个易混点大整合
  5. 攻防世界Reverse第九题no-strings-attached
  6. 【MySQL】在centos7 纯IPv6环境下,安装mysql5.7
  7. vb计算机水平考试笔试,2014计算机考试二级VB笔试答题技巧汇总
  8. 数据库-DQL练习(附答案)
  9. 服务器 .err文件,IIS 关闭HTTPERR(IIS日志)的方法
  10. 基于XML使用MyBatis
  11. 容我说下windows linux macosx
  12. PAT:1050. String Subtraction (20) AC
  13. SLAM:无人系统和增强现实overview
  14. Ubuntu 20.04 无连接图标无网络问题
  15. 《OpenCV 4.5计算机视觉开发实战:基于Python》图像处理技术
  16. 腾讯云Centos8.0 CPU使用率100%,top查询为kthreaddk占用异常
  17. 心若向阳, 岁月无恙
  18. FME格式转换学习笔记之一:CAD的数据分析及FME对CAD数据的转换
  19. 【ZYNQ】petalinux包含自定义的动态库
  20. MFC中afx_msg

热门文章

  1. xp中mysql优化_XP加速技巧大盘点 看看那个最实用
  2. limux php启动_linux下nginx与php设置开机启动代码
  3. 中国医科大学计算机在线作业,中国医科大学《计算机应用基础》在线作业及参考 答案.doc...
  4. php用while循环做出1到10的乘积,PHP实现笛卡尔积算法的实例讲解
  5. php ppt read_php怎么读取ppt文字内容并在浏览器中显示出来?
  6. staruml顺序图生成协作图_一个工具箱 之 南丁格尔玫瑰图生成器
  7. b树删除节点每次只能删一个吗_深入理解数据库系统之存储存引擎(B树)
  8. aspen二元体系共沸组分_超详细 | 手把手教你组分结构预测
  9. (12) ejb学习: JPA的传播属性
  10. java反码算术运算求和,位运算的妙用,运算妙用