hippo是目前阿里搜索主要的调度系统,hippo是一套分布式调度系统。与YARN和K8s的目的相同,都是提供为集群资源调度服务。

hippo架构

hippo是典型的master-slave架构,这与YARN类似,多个master通过zookeeper选主做failover和调度结果的持久化,master上主要是根据业务需求和资源供给进行资源预估,匹配算法和合理资源分配,资源分配的结果通过心跳发向各个slave作为资源目标,App master获取资源分配结果后向slave发送业务worker相关描述目标,slave以不断趋向目标的方式异步执行并自动进行Qos调控。themis进行资源管控,hippoweb可视化展示,hippoPE运维升级。

hippo业务和资源接入

hippo通过API-server,libCarbon和SDK三种方式提供业务接入,SDK是最老的接入方式。目前主流方式是通过API-server。如Yarn实现必要的协议对接,基于libCarbon(Hippo二层调度库)的Drogo管控平台接入相对简单的一维服务(如搜索应用searchweb)和suez-ops管控平台接入较为复杂的多维服务(如多行多列淘宝,天猫搜索引擎)。Hippo支持自身和业务的镜像化、容器化和服务化,系统服务如DP2(数据分发),Amon(指标收集)等基于二层carbon服务通过Pod模式(类似k8s的POD)组织部署。hippo on host是最早支持的对接乌力吉的资源接入方式,得益于hippo自身镜像化、容器化,hippo on host仅两个月半月便对接联调成功。

hippo资源分配协议

hippo是目标驱动、异步执行、最终一致、面向业务的分布式调度系统。实现了如offline协议,不强制回收,保证最小服务数渐进更新、单点故障failover等服务保障。基本的业务流程是App client向hippo master提交App描述,设置App master的资源需求目标,hippo master根据app master资源目标异步执行,在资源分配后启动app master(2-3),app master再向hippo master发送申请app worker资源的目标(4),hippo master根据app worker资源目标异步执行进行资源分配,app master根据返回的已分配资源向对应的hippo slave发送启动app worker请求目标,hippo slave再拉起app master(5-6)。

hippo重要特性

hippo镜像化容器运行

hippo的master和slave实现了镜像化和容器化运行,具备了快速部署和渐进升级的能力。

资源隔离

hippo slave上目前主要使用内核提供的cgroup子系统如blkio,cpu,cpuset,memory,net_cls和特定内核接口实现了对cpu/memory/Disk/network等不同层次和维度的资源隔离。

资源预估

hippo master上的一个插件管理的资源预估模块,通过对slave上返回的心跳信息中的每个slot的cpu/memory使用情况汇总,进行了相对简单的app+role级别的资源评估,资源预估的结果将作为资源超卖的主要依据之一,从而引入了类似resource guaranteed和resource limit的概念,也将影响资源弹性。

资源超卖

hippo slave将单机划分成在线和离线两个cgroup大组,在线空闲资源超卖给离线,以及离线之间资源超卖。在线负载低时,离线可以借用在线空闲资源,在线负载上升时,借出去资源要回来,也就是完全动态自主不断调整。目前主要做了CPU和memory两个维度的超卖。CPU维度主要是基于水位控制的思想,因为超线程以及其他资源的争抢的影响,水位超过一定限制CPU能力时开始非线性增长,在设置的安全水位下,可以将在线的闲置CPU资源卖给离线使用,并有最小使用量保证,防止调度饿死宕机。memory本身是非弹性资源,超卖策略上相对弹性资源CPU会保守一些,借用的闲置资源在某个阈值后借用比例会降低,memory如果不能在约定时间内释放出来将综合考虑优先级,运行时间,memory使用比例等因素选择某个离线进行用户态kill。hippo slave上每轮调度会计算离线任务的保底resource guaranteed和上限resource limit资源并以文件方式通知对应的slot,以便slot对应的业务做出决策。高峰期CPU和memory在离线分配百分比115%左右。

POD

类似于k8s的任务编排方式POD,在容器化环境中建立一个面向应用的逻辑主机模型,它可以包含一个或多个紧密联系的容器,多个容器共享slot资源,比如PID,IPC等。相比原生的容器接口,POD通过提供更高层次的抽象,简化了应用的部署和管理,hippo上的一些系统服务已经使用这种模式部署。

YARN on Hippo

通过yarn on hippo,实现了yarn这样的框架平台任务在hippo上调度,打开了离线任务的巧克力盒子。离线Topia(离线运维平台)通过hippo-api-server对接hippo,向hippo申请资源,根据返回的分配结果在相应的hippo slave上启动NM容器。这些NM组成了YARN的一个online partition,和离线自己的offline partition被yarn统一管理。这样离线任务就可以被调度到在线集群的NM上运行。通过上述资源隔离、预估、超卖等,并在保证在线业务质量的前提下,将闲置资源超卖给yarn,从而可以通过在线集群承接运行在yarn上的任务,在大促场景,可以借用离线的机器部署在线任务,从而实现在线和离线之间的资源流转。

阿里搜索hippo架构相关推荐

  1. HBase在阿里搜索中的应用实践

    http://blog.51cto.com/wangxy/1952591 李钰,花名绝顶,WOTA全球架构与运维技术峰会分享嘉宾,现任阿里巴巴搜索事业部高级技术专家,HBase开源社区PMC & ...

  2. 大数据HBase在阿里搜索中的应用实践

    HBase作为淘宝全网索引构建以及在线机器学习平台的核心存储系统,是阿里搜索基础架构的重要组成部分.本文我们将介绍HBase在阿里搜索的历史.规模,应用的场景以及在实际应用当中遇到的问题和优化. HB ...

  3. 百万TPS高吞吐、秒级低延迟,阿里​搜索离线平台如何实现?

    简介: 作者 | 鸿历 作者简介:王伟骏,花名鸿历,阿里巴巴搜索推荐事业部高级开发工程师.2016年硕士毕业于南京邮电大学.Apache Hadoop && Flink &&a ...

  4. 阿里云首席架构师唐洪:拥抱开源的云端更具生命力

    近日, 国际开源界顶级会议LC3(LinuxCon + ContainerCon + CloudOpen)首次在国内举行,阿里云首席架构师唐洪作为特邀嘉宾出席并发表主题演讲.唐洪首先从一组数字开始,回 ...

  5. 6年拉力工作经验,学了阿里P8级架构师的7+1+1落地项目,跳槽阿里年薪直接40W+

    前言 统一说明一下,楼主是研究生,一般的985毕业,之前在工作了6年,做过的大项目数不胜数, 比如再造淘宝项目落地实战,某滴网约车项目,多人在线即时对战网游服务器,和家云服务平台,前后端分离某喵微信商 ...

  6. 阿里电商架构演变之路

    前言:从网上找的首届阿里中间件技术峰会上的一个报告,2017年7月的,报告的名字叫阿里电商架构演变之路,感觉不错所以看了一遍,在此记录一下,复制了其中大部分内容,并进行了整理,然后在晦涩之处用自己的语 ...

  7. 适合阿里P8级架构师提升学习的再造淘宝阿里团队代码落地实战项目

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  8. 阿里云高可用架构之“CDN+WAF+SLB+ECS

    [企业实战]:阿里云高可用架构之"CDN+WAF+SLB+ECS"  相信有些朋友看过笔者之前写的这篇文章 <如何为企业快速设计高可用的阿里云架构>,并对阿里云的一些服 ...

  9. 阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松

    阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松 一.概述 面试,难还是不难?取决于面试者的底蕴(技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想 ...

最新文章

  1. java mybatis向mysql数据库插入中文出现乱码
  2. 【编撰】linux IPC 001 - 概述
  3. 大数据(2)---Hadoop由哪几部分组成?
  4. 用fileupload处理文件上传
  5. Hadoop——HDFS(2)
  6. 有哪些让人相见恨晚的Python库(一)
  7. 07-图5 Saving James Bond - Hard Version
  8. 沈志勇:中国式营销三部曲
  9. Ubuntu18.04安装MyEclipse2017 CI 10
  10. 玉林师范学院计算机宿舍专业,玉林师范学院宿舍怎么样 住宿条件好不好
  11. docker搭建MySQL集群
  12. 网吧无盘服务器最佳配置,史上最全的网吧无盘服务器配置
  13. 【matlab笔记】寻找极小值
  14. anjuta调试caffe
  15. namenode 格式化 -format
  16. 唯一登录、联合登录、单点登录——唯一登录
  17. js中的contains
  18. 编译原理拉链回填技术c语言,编译原理笔记1:概述编译相关的基本知识
  19. 【Gstreamer】PUSH/PULL mode生动解析
  20. java实现openoffice在线预览文档

热门文章

  1. P3205 [HNOI2010]合唱队 (区间dp)
  2. 解决不同浏览器上传文件filename不一样问题
  3. 2018 年最受欢迎的电影,你都看过哪些?
  4. C#将带声调的拼音转不带声调的拼音
  5. 职场英语--表达认可与称赞,以及获得夸赞后如何回复
  6. 基于Multisim的超外差式接收机仿真设计附解调器
  7. 学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?
  8. 一个真正的君子应当施恩不图回报
  9. 微服务注册中心-Eureka
  10. android xutils json请求,Android中的xutils框架在访问服务器时如何携带json数据