阿里巴巴 吕奇 - 阿里混部技术最佳实践

次清怡

2017/12/18 发布于 技术 分类

ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。 ArchSummit秉承“实践第一、案例为主”的原则,展示新技术在行业应用中的最新实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。

文字内容
1. 阿里混部技术最佳实践   吕奇(花名:潇谦)   阿里巴巴高级技术专家  
5. 吕奇   花名潇谦,阿里巴巴高级技术专家   2014年加入阿里巴巴,是阿里巴巴大规模混部及容器化的项目 负责人,3次参与双11大促,目前主要负责阿里巴巴规模化混部、 在线存储计算分离、资损防控体系、统一日志中心。  
6. •  混部简介   •  混部的历程   •  混部的架构   •  调度与内核   •  未来的展望  
7. 为什么要混部        各种数据报告都显示目前数据中 心的机器利用率平均在10%左右    容灾、峰值,机器数冗余大      另一方面,大数据的普及,离线 分析作业越来越多,成本极高                  如何解决?  
8. 什么是混部   在线服务! 离线计算! 实时计算!      把集群混合起来,将不同类型的任务调度到相同 的物理资源上,通过调度,资源隔离等控制手段, 保障SLO,极大降低成本,我们称这样的技术为   混部(Co-loaction)  
9. 在线离线的混部   在线优 就像是石块,且延时敏感, 先级⾼高! 利用率不高,不可重跑   离线优 就像水和沙子,且延时不 先级低! 敏感,利用率高,可重跑   低优先 当在线不忙时,离线就抢 级牺牲! 占,反之则返还,甚至反哺   优先级 是可以进行混部,并带来 互补性! 成本收益的两个前提条件  
10. 混部的使用场景   30%成本下降   日常可以提升利用率、 大幅度降低成本     10%交易流量   大促时可以通过挤占 离线的方式来抗住峰 值带来的压力  
11. •  混部简介   •  混部的历程   •  混部的架构   •  调度与内核   •  未来的展望  
12. 混合云   在线服务运维! 在线服务调度! 业务层! 计算产品运维! 计算任务调度! 云服务运维! Cloud open API! T4   NC   保有云   在线服务与计算任务   ECS   公有云   当保有云不足时   32.5万笔/秒!              双11每年都在创造奇迹,但是 高峰却只有1小时左右。                一方面开始使用阿里云的公有 云资源的弹性能力降低成本。另一 方面,我们也开始研究混部的相关 技术。          
13. Google与Borg    2015年,Google发表了Borg论 文,其中就提到了在线服务与计算 任务之间的混合运行,也就是我们 说的混部技术。        Borg论文中描述了Google由于采 用了这项技术,为Google整体节省 了20%-30%的机器规模  
14. 混部的四年历程   启动研究   2014! 线下测试   2015! 线上验证        200   2016! 大规模使用        20%   2017!
15. 日常混部的效果   混部:40%   非混部:10%   30%  
16. 干扰性的效果   影响   5%   以内  
17. •  混部简介   •  混部的历程   •  混部的架构   •  调度与内核   •  未来的展望    
18. 基于容器的Sigma   •  兼容Kubernetes  API,   和开源  社区共建     •  采用阿里Pouch容器   (兼容OCI  标准)     •  通过阿里多年大规模及 双11验证  
19. 基于进程的Fuxi   CLT! RPC_wrapper! FuxiMaster! Cluster! Node! Fuxi! Agent! APP! Master! Cluster! Node! Fuxi! Agent! APP! Worker! APP! Worker! Cluster! Node! Fuxi! Agent! APP! Worker! APP! Worker! Cluster! Node! Fuxi! Agent! APP! Master! APP! Worker! •   面向海量数据处理和大规模计 算类型的复杂应用   •  提供了一个数据驱动的多级流 水线并行计算框架,在表述能 力上兼容MapReduce,MapReduce-Merge,Cascading, FlumeJava  等多种编程模式。     •  高可扩展性,支持十万以上级 的并行任务调度,能根据数据 分布优化网络开销。自动检测 故障和系统热点,重试失败任 务,保证作业稳定可靠运行完 成。  
20. 混部的整体架构   SigmaMaster Level0Controller FuxiMaster •  通过sigma和fuxi完成 在线离线的各自调度   •  通过零层相互协调资源 配比   •  通过调度和内核解决资 源竞争隔离问题   Level0-Data Level0Agent Follow the OCI standards SigmaAgent FuxiAgent RunC RunV RunLXC vLinux Pouch Pouch Prod Jobs JOB Pouch JOB Non-prod Jobs
21. 零层的协调机制   sigmaMaster! Sigma RM! Level0 Manager! Level0 RM! sigmaAgent! 容! 容! 容! 器! 器! 器! Level0Agent! FuxiMaster! •  混部集群管理   Fuxi RM! •  各调度租户资源配比   •  FuixAgent! •  ta! ta! ta! sk! sk! sk! 日常压测大促策略   异常检测与处理  
22. •  混部简介   •  混部的历程   •  混部的架构   •  调度与内核   •  未来的展望  
23. 混部中的两大核心    调度   通过资源画像,在 竞争之前,尽量减 少资源竞争的可能 性   资源竞争   主动,延时高    内核   在发生资源竞争 的极端情况时, 优先保障高优先 级任务   被动,延时低  
24. 调度:平时的分时复用   离线扩水位 在线缩水位   在线扩水位 离线缩水位   •  对集群进行资源使 用的画像   •  在线凌晨1-6点为低 峰,离线是高峰   •  通过在线服务资源 画像智能挑选空闲 容器进行offline处 理   离线高峰可拉升 至60%以上  
25. 调度:大促时的分时复用   在线服务   计算任务   混部机器   独占机器   ⽇日常态! 1⼩小时完成快 速线切换! ⼤大促态!
26. 调度:压测时的无损有损降级   •  5分钟内完成无损降级   离线运行   •  在线服务CPUSET模式,NC平均利 5min离线降级   用率不高   常 在线线压测30min   态 •  离线70%的任务小于3分钟   在 线 压 5min离恢复   •  分钟级快速恢复     测 离线运行1小时   •  秒级的快速kill预案   5min离线降级  
27. 调度:离线作业选取   Task1! Task2! Task3! Task4! Task5! 资源画像! Level0 Data! 规则过滤! Task4! Task5! •  对作业进行资源 使用的画像   •  通过0层来获得 剩余的资源能力   •  挑选符合条件的 作业  
28. 调度:弹性内存   •  在线加入内存共享分组   离线 最小   •  基于在线的实际内存使用,动态调整离线水位   离线 可占   •  当在线突增时,自动降级(Kill)   buffer   共享组   •  解决离线内存快速释放问题   在线 实际   •  整体OOM时,优先杀离线优先级低的任务  
29. 调度:存储计算分离   SSD! SSD! SSD! SATA! SATA! SATA! 计算节点! 计算节点! 计算节点! 计算节点! 计算节点! 计算节点! 统一计算调度   ⼤大数据存储! 通⽤用块存储! ⽇日志中⼼心! 统一存储调度   •  存储与计算混杂在一起, 对于调度复杂度是乘的 关系   •  网络能力的提升,让远 程访问变得像本地一样 快  
30. 内核隔离:CPU   •  CPU抢占       •  按照CGroup分配优先级(cpu.shares)   •  高优先级任务可以抢占低优先级任务        的时间片   •  规避HT(noise  clean)     •  避免离线任务调度到在线任务相邻的HT上   •  保证已经运行的离线任务在在线任务于相邻HT上唤醒后迁走  
31. 内核隔离:CPU   Response Time against different DRAM BW Response Time •  L3  Cache隔离   •  CAT:BDW  CPU的特性;   •  内存带宽隔离   5! 10! 15! 20! 25! 30! •  Memory  Bandwidth  Monitoring  ;   DRAM Write BW (GB/s) •  Cfs  bandwidth  control  调节离线任务运行时间片长度  
32. 内核隔离:内存   •  内存回收隔离   •  按照CGroup分配优先级     •  增加组内回收机制,避免全局内存回收干扰在线任务   •  按优先级确定内存回收的权重,在线任务的内存被回收的更少   •  OOM优先级   •  整机OOM时,优先杀低优先级任务  
33. 内核隔离:网络   •  带宽隔离   •  隔离本机带宽(TC)。   •  Pouch容器间的带宽隔离     •  带宽共享(金、银、铜)   •  在离线间可以存在共享带宽   •  进程间按照优先级可以抢占带宽  
34. 内核隔离:IO   •  文件级别的IO带宽隔离(上限)   •   新增blkio的控制接口   •   限制IOPS,BPS   •  文件级别的保低带宽(下限)   •  允许应用超出保底带宽后使用富余的空闲带宽;   •  Metadata  throttle   •  限制特定操作的metadata操作,例如一次性删除大量小文件。    
35. •  混部简介   •  混部的历程   •  混部的架构   •  调度与内核   •  未来的展望  
36. 更大规模的使用   实时 FPGA! 计算! GPU! 场景更多元   混部! 千级别! 规模更大   万级别!
37. 更加精细化的调度与隔离   从集群⽔水位到单机⽔水位! 从实时判断到智能预测! 混部! 更多的优先级和维度! 完全⾃自动化的协调机制!
38. 云上推出敏捷版本   3rd  party  client  or  PaaS   Kubect l  Spark   Hadoop   K8S  API   Yarn  API   资源调度   应用管理   公有云   ECS   SLB   EIP   VPC   在线服务PaaS   离线计算PaaS    定位   …   ACS   EDAS   EMR   Sigma  Agility   Console   ü  阿里内部调度、容器、运维 领域优势技术的输出平台   K8S  API   Yarn  API   ü  兼容Kubernetes架构和标 Sigma  Agility   资源+服务+数据 编排   混合云架构   NAS   OSS   Bare  Meta l  VM   准   弹性伸缩   混部   Co-location   ü  提供企业级容器应用管理能 力,提高企业IT效率   Based  on  Kubernetes  and  Yarn .   优势   私有云   LB   Network   Pangu   HDFS   ü  混部(Co-location)   ü  灵活的调度策略和算法   ü  和阿里云生态无缝整合   ü  经过双11检验