联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
4.7 弹性伸缩功能
更新时间:12/10/2021, 2:59:23 AM

产品功能简介

  • 产品功能

    Inceptor作为大数据计算组件,业务负载不同时,对 executor 数量的需求都会不同,为了更好的响应业务的处理要求,在业务繁忙时希望及时增加 executor 的数量,当业务负载下降时,及时减少 executor 的数量。

  • 使用场景和价值

    空闲资源的释放,提高集群资源的复用率;运营模式下,降低租户资源使用成本,按需弹性。

弹性伸缩规则

弹性伸缩的规则分为基于负载的弹性伸缩和基于时间的弹性伸缩两种。

基于负载的弹性伸缩

在检测的时间窗口跨度内,计算该时间跨度内规则 metrics 的平均值。指标统计周期为每一分钟统计一次。

  • 弹性扩容的规则

    当Inceptor所有 executorCPU core 平均使用率 > 70%,将会触发弹性扩容,增加 executor ,增加数量为当前 executor 数量*20%(向上取整)。

  • 弹性缩容的规则

    当Inceptor所有 executorCPU core 平均使用率 < 20%,将会触发弹性缩容,减少 executor ,减少数量为当前 executor 数量*20% (向上取整)。

  • 弹性执行后的观测窗口变化

    弹性伸缩被触发时的时间点,是下一个观测时间窗口的起始时间。

基于时间的弹性伸缩

用户可以根据需求,设置具体时间点的计算执行单元数。基于选择的时区,添加弹性规则。每条规则内,需要设定弹性触发的具体日期,时间,和需要的executor的数量。一旦到达规则定义的日期和时间点,则executor的数量将自动调整为设定的数量,并一直保持,直到触发下一个日期时间规则设定的executor数量值。

弹性功能限制

弹性功能的规则是系统默认,用户无法更改,但可以通过修改系统配置文件变更。当租户配额,系统资源不足时,调度不出所需要的 pod 数,只记录能调度出来的 pod 数量。

弹性伸缩功能的使用

  • 弹性伸缩功能的开启

    创建实例时,开启弹性伸缩按钮即可。

    实例创建后增加Inceptor组件时,可开启弹性伸缩按钮。一个实例中有多个Inceptor组件时,可分别独立对其进行操作和编辑。

    auto1
    auto2
  • 弹性伸缩功能的关闭

    实例运行后,可以关闭弹性规则,即取消实例的弹性伸缩功能。关闭弹性规则时,可选择保留当前 executor 数量或是恢复到初始的 executor 数量。

    auto3
  • 基于负载的弹性伸缩功能配置

    部署实例时,需要打开实例的弹性伸缩功能,对此实例的弹性功能进行配置。创建实例时,设置初始 executor 的数量。起始默认值为3,即实例创建时,就直接创建3个 executor 。设置弹性规则,设置上限—下限(M—N),以及弹性伸缩观测时间窗口:(A)小时。弹性伸缩观测时间窗口的系统限制范围是1—168。开启弹性功能后,在弹性伸缩检测时间跨度A之后,就开始基于负载进行弹性伸缩。

    auto4

    实例运行后也可以进行弹性规则的更改。可以更改弹性伸缩的上限与下限或是弹性伸缩的监测窗口时间段大小。编辑之后,以更改的时间点为弹性伸缩监测时间窗口的起点,开始监测运行状况。

  • 基于时间的弹性伸缩功能配置

    打开弹性伸缩功能,选择基于负载的弹性伸缩类型。首先确定时区,再基于时区,添加规则。每条规则需要选择日期,时间,和到达时间点时需要触发的 executor 总数。日期栏可以选择一周中的某一天或某几天,支持多选和全选。时间栏可以选择一天中几点几分开始执行触发,选项为24小时制,精确到分钟。 executor 栏填写到达设置时间时,需要触发的 executor 的数量。

    auto4.1
  • 弹性伸缩其它信息

    在配置 autoscaling 策略时,默认 executor 数量是3个,也可以根据需要修改。需要输入弹性伸缩范围,观测时间窗大小。

    配置完弹性功能,会输出实例运行的指标信息,包括业务指标和 executor 的资源使用类指标。业务指标会显示目前执行的任务数和等待执行的任务数。 executor 的资源使用类指标主要显示 CPU 使用情况,同时也会输出 executor 增减数量。

    配置完弹性功能,会输出实例运行的指标信息,包括业务指标和 executor 的资源使用类指标。业务指标会显示目前执行的任务数和等待执行的任务数。 executor 的资源使用类指标主要显示 CPU 使用情况,同时也会输出 executor 增减数量。

    executor 增加时,优先在 DataNode 节点增加,若对应的 DataNode 节点资源不足,则在其它 worker 节点调度。若所有节点资源都有限,则尽力调度,能调度几个算几个。 executor 减少时,会删除相关 pod

  • 弹性伸缩记录及详情

    具有弹性伸缩功能的组件详情页内,增加了弹性伸缩tab页面。在此页面内,可以进行弹性伸缩配置。选择时间跨度(小时/天/周/月)来监测 executor 的当前数量/弹性伸缩最大/最小值, task 的当前/运行/失败数量,compaction`的当前`blacklist size/当前`queue size`,shuffle`当前`read/s / write/s

    auto5

    在监测图下侧,是历史纪录栏,记录组件弹性方向,变化时间, executor 变化数量和弹性触发后, executor 的数量,和操作详情日志。

    auto6

功能限制

  • 对计费的影响

    订单中会体现对计费产生影响的功能。账单操作者为`admin`,以区分是人为造成的变化还是系统触发的自动伸缩行为。具体计费按照实际调度的结果占用的资源来计算。

    auto7

    星环按照节点来计算收费。对于独占租户来说,如果节点资源够,可以在一个节点运行多个 executor ,这种情况下,按照一个节点来收Inceptor的费用。

  • 资源不足的调度

    当租户为独占型租户时,由于独占型租户的节点是固定的,弹性扩展时要确认是否有计算资源。独占型租户资源不足时,触发了弹性扩容时,如果扩容失败,需要展示失败记录。

    如果租户不是独占型租户,弹性功能触发时,如果当前 DataNode 节点无计算资源可以调度时,会在其他节点执行弹性功能,并维持现有规则。如果所有 worker 节点都没有计算资源时,弹性执行失败。

  • 租户配额的影响

    在创建实例时,如果租户资源配额不够,则无法开启弹性功能,系统提示:申请配额后再创建。如果在弹性功能设置完成之后,由于租户其他实例对资源的占用导致配额不够,而无法触发弹性扩容,不会产生弹性伸缩记录。

  • 对组件共享的影响

    引用租户内的其他实例的组件时,判断租户的配额是否足够。

    优先在hdfs的DataNode组件所在的节点增加。若该节点没有可以调度的资源,在其它 worker 节点调度。

  • 用户控制台的 executor 数量展示

    弹性触发之后,实例的 executor 数量会立即更新到前台页面。用户可以通过在前端控制台设置参数,来检测系统弹性规则设置的冲突。可以更改默认的数量,同时检测是否在弹性上下限范围内,如果不在限制内,则更改上下限的值。

  • 调度策略的协同

    Inceptor autoscaling 弹性调度的策略会与磁盘高`IO`互斥调度策略、`TCOS schedule`调度策略、`node selector`策略协同。

  • 技术方案后续演进

    目前暂不支持对ArgoDB产品的弹性伸缩支持。