You need to enable JavaScript to run this app.
导航
弹性伸缩最佳实践
最近更新时间:2024.06.12 14:02:07首次发布时间:2024.04.07 15:32:01

本文介绍了借助火山引擎EMR on ECS的弹性伸缩功能实现大数据计算成本节约最佳实践。

1 适用场景

本章节将介绍哪些特征的大数据使用场景适合弹性伸缩,以及观察判定的方式。

  • 规律的离线计算场景
    • 通常情况下,离线数仓或其他有Daily ETL属性的任务的作业高峰期只会在24小时内持续一段时间(如较多的互联网企业的数仓每日0点到9点为作业高峰期)。在高峰期内,CPU或内存的使用率持续高位;而在非高峰期,使用率非常低甚至接近0。
    • 这种规律并带有明显使用率潮汐特征的作业,适用于弹性伸缩,且潮汐特征越明显、高峰期越短,成本收益越高。
  • 确认方式

图片

  • 观察未配置弹性伸缩集群的运行情况-CPU使用率(也可选择内存作为观测指标),是否如果出现长时间利用率高峰(高于75%)或低谷(低于25%)。如果出现,将可以分别对这些时间段的计算设置相应的规则;如果出现利用率高峰长于16小时或出现小时级别的利用率波动过大无规律的情况,将不适合使用本文的场景。

图片

2 弹性伸缩策略设定

在确定适用场景后,本章节将指引针对该场景如何选择弹性伸缩策略。

2.1 计算资源划分

  • 总计算资源
    • 由于弹性伸缩实践总是依赖于观察未设置弹性伸缩时的现有集群运行状态指标,所以未部署弹性伸缩时,集群的总计算资源即为总资源。
  • 以CPU核数作为单位为例,如果未部署弹性伸缩之前有16个64core的节点作为计算资源,则总资源为1024core。(下文举例均引用该基准)
  • 常驻资源与弹性伸缩资源
    • 为了保证整个集群的稳定性,防止由于库存等因素造成的弹性伸缩扩容失败的低概率事件对集群的影响,总计算资源应该划分一部分作为常驻资源,其余作为弹性伸缩资源。
    • 常驻资源的预期
      • 观察1天的CPU使用率,将连续的使用率在75%以上的小时数 * 总计算资源 / 24 * 50%,作为常驻资源的值
        • 使用率低于75%不超过1小时,均视为连续。
        • 该方式是满足高峰算力50%视为常驻资源作为保底,可以根据实际情况自行调整保留算力大小。
    • 弹性伸缩资源 = 总资源 - 常驻资源

2.2 扩容缩容时间区间与计算资源预期

  • 观察1天的CPU使用率,选定连续的使用率在75%以上的时间区间,预期100%弹性伸缩资源。(注:使用率低于75%不超过1小时,均视为连续。)
    • 对应的规则为:每日时间区间起点,扩容100%弹性伸缩资源;时间区间终点缩容,缩容到下一个时间区间预期的资源。(后续区间同理)
  • 选定连续的使用率在25% - 75%的时间区间,预期50%弹性伸缩资源。
  • 使用率低于25%的时间区间,预期不使用弹性伸缩资源。

注意

规划的所有时间区间应是连续的,否则会出现没有预期的使用时间段。

2.3 兼容非预期资源使用场景

  • 任务结束的结束时间大多数有规律,但偶尔会晚于平均时间。
    • 修改缩容规则,从【时间区间终点缩容】,修改为,【时间区间终点 到 下一个时间区间终点时间段内;且使用率低于当前区间预期使用率】,缩容到下一个时间区间预期的资源。
    • 在该规则下,如果出现预期时间后,即使使用率过高,也不会出现缩容的情况。

3 实例选择

  • 不同实例扩容速度
    • 云盘实例:平均1.5min
    • SSD本地盘实例:平均5min
    • HDD本地盘实例:平均10min
  • 扩容的时间buffer
    • 当设置扩容规则选定不同的机型时,应留有一定的扩容速度时间余地。
    • 如选择SSD本地盘实例扩容时,应将时间区间向前调整5min。

4 操作指南

开启弹性伸缩参考:弹性伸缩