小米Hadoop YARN弹性调度的探索与落地

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 小 米 H A D D O P YA R N 弹性调度的探索与落地 石龙飞 小米大数据研发工程师
2. 目录 CONTENT 01 背景 04 弹性成果 02 弹性调度 05 未来规划 03 难点挑战
3. 01 背景
4. 背景 平均资源利用率低 Hadoop YARN 离线计算集群的资源使用存在明显峰谷,低谷时存在资源浪费 集群降本增效 随着小米各个业务的扩张,底层计算的规模也越来越大,降本增效势在必行
5. 目标 优化掉计算低 谷闲置资源 使用更加廉价 的计算资源 作业的稳定性 不受影响
6. 02 弹性调度
7. Hadoop YARN 架构 ResourceManager 负责集群资源的统一管理和调度 NodeManager 负责单节点资源管理和使用 ApplicationMaster 负责应用程序的管理
8. 弹性资源池 资源池类型 成本 稳定性 资源池大小 技术难度 总结 公有云按需 实例(OD) 高 高 大 易 稳定量大,但成 本优化不显著 公有云抢占 实例(Spot) 低 低 较大 难 便宜,但需要克 服稳定性问题 难 0成本,需按时释 放,存在错峰混 布的技术难点 内部在线业 务机器 无 中 固定量 资源池使用策略 弹性应尽量将内部在线业务闲置资源使用起来,然后再使用公有云抢占实例补足其余所需资源,最后用 按需实例来做为兜底方案
9. 弹性调度描述 基于一个或多个资源池,根据一定的弹性 策略,将 YARN 集群进行动态扩缩容。
10. 整体架构设计 高峰扩展 AutoScaling 低谷释放 优化掉了计算低谷时的闲置 资源 弹性资源/节点 特点:周期性拉起释放,运 行中还伴随着被下线的可能 使用资源池中更加廉价的计 算资源 ResourceManager Node Node Node Node Node Node Node Node Node Node 弹性资源池 YARN集群 节省资源 弹性资源 default资源
11. 根据集群当前状态或者既定的规 则,生成一个资源伸缩结果,包含 伸缩动作以及资源量 Spot 对应一个计算实例(比如一台机器 或者一个K8s Pod),记录计算实例 ScalingStrategy AutoScaling设计 ScalingStrategy SpotManager Spot 的基本信息 Spot Spot Scaler 资源池 Scaler 资源池 Scaler 资源池 AutoScaling SpotManager Scaler 接收资源伸缩结果,再通过 Scaler 执行真正的 伸缩动 伸缩器,适配不同的资源池,对资源进行申请释放操 作,维护 Spot 状态 作,可以同时使用多个 Scaler
12. 弹性策略 集群使用资源监控 集群等待资源监控 静态历史负载 动态资源需求 描述:根据集群的历史负载情况,对当前所需 描述:根据集群实时的有效的等待资源以及负载 的弹性资源做出判断 情况等因素,评估出接下来弹性资源的需求,并 特点:策略简单稳定,但是无法适应突发的资 在合理范围内做资源弹性决策 源需求 特点:可以灵活应对集群资源需求的变化,但是u 考量因素和决策结果都较为复杂
13. 03 难点挑战
14. 作业稳定性-Label default label ResourceManager X label ResourceManager Node Node Node Node Node Node Node Node Node Node Node Node Queue App1 Queue App2 App3 App1 App2 App3
15. 作业稳定性-Label 弹性资源 default 资源 Spark Flink App MapReduce AM App 时间 弹性资源 00:00 12:00 00:00 资源隔离 单作业多类型资源需求 label 或表达式 需要使用 label 将特性不同的 一个作业可以被任何类型的资源满足,只 ||spot||od:表示default、spot、 计算资源分类,以应对不同 要有空闲资源,那么使用任何一种都可以 od 三种中任意一种类型的资源 的资源需求 计算低谷无弹性资源 使用弹性资源的同一个作业,在计算高峰 低谷任何时候运行都应该有资源可用 都可以满足资源需求
16. 作业稳定性-节点平滑下线 Decommission 机制平滑 HDFS excludes.xml 下线节点 1. AutoScaling 将需要下线的目标节点 以及超时时间写入 excludes.xml 2. ResourceManager 读取 excludes.xml 文件 1 2 AutoScaling 4 ResourceManager 3. ResourceManager 将目标节点标记 heartbeat 为正在退役 4. AutoScaling 定时从 ResourceManager 获取目标节点状态 5. 当 AutoScaling 发现目标节点状态从 正在退役到已退役,正式下线目标节点 5 3 Node 计算实例
17. 作业稳定性-Spark 计算实例 计算实例下线导致不稳定 Data 已经生成好的中间数据丢失 正在运行的 task 失败 Data task 计算实例 task Data Spark Remote Shuffle Service 节点状态感知 将 Spark 中间 shuffle 数据写到一个服务中,而不是 Spark 适配处理所有节点的非正常状态,将这种异常 本地磁盘,保证已经生成的 shuffle 数据不丢失 节点上的失败的 task 不计入真正的失败,从而避免 整个作业因 task 失败过多而失败
18. 用户无感知-队列 弹性下默认资源配置 默认资源配置 弹性资源配置 资源实际使用 非弹性下默认资源配置 60 弹性下弹性资源配置 100 00:00 12:00 00:00 拆分队列资源 12:00 00:00 12:00 40 根据队列历史资源使用情况,计算默认资源与弹性资源的 配比,生成在队列配置中,此过程用户无感知
19. 用户无感知-作业 低优 高优 适合弹性 不适合弹性 弹性资源 节点下线时间 App App App 00:00 节点下线时间 App 12:00 App 00:00 12:00 时间 00:00 作业筛选 作业配置 根据以下两个维度对历史作业进行筛选 将筛选出来的作业,通过内部的作业提交工 时间维度:作业运行时长、是否与节点下线时间重合 具,把 Label 表达式的配置统一设置,用户无 优先级维度:高优、默认、低优 感知
20. 其他问题 • 丰富 YARN Label 可观测性 • 使用灰度系统对弹性实例的 NM 版本进行控制 • 基于 YARN 元仓实现队列和作业自动接入弹性资源 • IDC弹到公有云的带宽问题?
21. 04 弹性成果
22. 弹性成果 与集群负载更加匹配的集群资源 显著的成本优化 弹性资源 类型 弹性资源 占比 集群 总成本 成本节约 比率 无 0% 100 0% 公有云按需 实例 25% 88 12% 公有云抢占 实例 25% 80 20%
23. 05 未来规划
24. 未来规划 Auto Scaling 在线 资源 与 RM 整合 探索在离线错峰 优化弹性策略 抽象在线资源 优化节点下线选择
25. 非常感谢您的观看

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.3. UTC+08:00, 2024-11-25 03:53
浙ICP备14020137号-1 $访客地图$