
# 配置MRS集群弹性伸缩
#### 应用场景
本入门指导以如下业务场景为例，介绍弹性伸缩规则与资源计划叠加使用的操作：
某项实时处理业务数据量在周一、周二和周六7:00\~13:00出现规律性变化，但是数据量变化并非非常平稳。假设在周一、周二和周六7:00\~13:00期间，需要Task节点的数量范围是5\~8个，其他时间需要Task节点数量是2\~4个。
因此可以在资源计划的基础上，设置基于负载的弹性伸缩规则，以实现当数据量超出预期后，Task节点数量可以在资源计划规定的范围内根据负载情况进行浮动，但不会超出该规定范围。资源计划触发时，会以变化最小的方式使节点数量满足计划规定范围，即如果需要扩容则扩容到计划节点数量范围的下限，如果需要缩容则缩容到计划节点数量范围的上限。
#### 约束与限制
在大数据应用，尤其是实时分析处理数据的场景中，常常需要根据数据量的变化动态调整集群节点数量以增减资源。MRS的弹性伸缩规则功能支持根据集群负载对集群进行弹性伸缩。
- 弹性伸缩规则：根据集群实时负载对Task节点数量进行调整，数据量变化后触发扩缩容，有一定的延后性。
- 资源计划（按时间段设置Task节点数量范围）：若数据量变化存在周期性规律，则可通过资源计划在数据量变化前提前完成集群的扩缩容，避免出现增加或减少资源的延后。
弹性伸缩规则与资源计划均可触发弹性伸缩，两者至少配置其中一种，也可以叠加使用。
#### 视频介绍
配置MRS集群弹性伸缩操作案例可参考[配置MRS集群弹性伸缩操作视频](https://support.huaweicloud.com/mrs_video/index.html)，该视频以MRS 3.1.0版本集群为例，介绍如何在购买集群时配置弹性伸缩、如何为已有集群新增弹性伸缩策略。
![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
因不同版本操作界面可能存在差异，相关视频供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="zh-cn_topic_0000001168444324_object12919135512138" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/mrs-video/1677746277126100379.mp4" title="配置MRS集群弹性伸缩" poster="https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000001974836594.png" height="300.0000" width="600.0000"></video>
#### 添加Task节点组
MRS集群创建成功之后，如果需要规划Task类型的节点组进行弹性伸缩，可通过手动添加节点组的方式进行配置。
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在"现有集群" 中单击待操作的集群名称，进入集群信息页面。
3. 在打开的"概览"页签查看"集群类型"。 
   - 如果集群类型为"自定义"，执行[步骤 4]。
   
   - 如果集群类型不为"自定义"，执行[步骤 5]。
   
   
   
   
4. 为"自定义"类型集群添加Task节点。
   
   1. 选择"节点管理"页签，单击"新增节点组"，进入"新增节点组"页面。
   
   2. 节点类型选择"Task"，"部署角色"参数默认选择"NM"部署NodeManager角色，其他参数根据需要配置。
      图1添加Task节点组   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002150236608.png "点击放大") 
   
   3. 单击"确定"，等待节点添加完成。操作结束，无需执行后续步骤。
   
   
   
   
5. 为非"自定义"类型集群添加Task节点。
   
   1. 选择"节点管理"页签，单击"配置Task节点"，进入"配置Task节点"页面。
   
   2. 配置"节点类型"、"节点规格"、"节点数量"、"系统盘"，如开启"添加数据盘"后，还需要配置数据盘的存储类型、大小和数量。 下图以为分析集群配置Task节点为例，具体界面以实际为准。
      图2为分析集群配置Task节点   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002313082006.png "点击放大") 
   
   3. 单击"确定"，等待节点添加完成。
   
   
   
   
 
#### 弹性伸缩规则与资源计划叠加使用
1. 登录MRS管理控制台。
2. 选择"现有集群"，单击待操作的集群名称，进入集群详情页面。
3. 选择"弹性伸缩"页签，进入配置弹性伸缩界面。
4. 单击"新增弹性伸缩策略"按钮，并配置"节点数量范围"为"2 - 4"。
5. 配置资源计划。 
   1. 单击默认范围下方的"配置指定时间段的节点数量范围"。
   
   2. 配置"时间范围"和"节点数量范围"。 "时间范围"："07:00-13:00"
      "节点数量范围"："5-8"
      
   
   
   
   
6. 配置弹性伸缩规则。 
   1. 勾选"扩容"。
   
   2. 单击右侧"添加规则"，进入"添加规则"页面。
      图3添加规则   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002185005869.png "点击放大")
      "规则名称"：default-expand-2
      "如果"：在下拉框中选择规则对象及约束要求，例如YARNAppRunning大于75
      "持续"：1个五分钟
      "添加"：1个节点
      "冷却时间"：20分钟
      
   
   3. 单击"确定"。
   
   
   
   
7. 勾选"我同意授权MRS服务根据以上策略自动进行节点扩容/缩容操作。"。
8. 单击"确定"，等待弹性伸缩集群设置完成。
 
#### 参考信息
在添加规则时，可以参考[表1]配置相应的指标。
![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 混合集群的支持分析集群和流式集群的所有指标。
- [表1]该表中不同数值类型取值精度如下：
  - 整型：整数。
  
  - 百分比：0.01。
  
  - 比率：0.01。
   
 
 表1弹性伸缩指标列表 
| 集群类型 | 指标名称                                                                              | 数值类型 | 说明                                                                                                                                        |
|:---|:---|:---|:---|
| 流式集群 | StormSlotAvailable                                                                | 整型   | Storm组件的可用slot数。 取值范围为\[0～2147483646\]。                                         |
| 流式集群 | StormSlotAvailablePercentage                                                      | 百分比  | Storm组件可用slot百分比。是可用slot数与总slot数的比值。 取值范围为\[0～100\]。                           |
| 流式集群 | StormSlotUsed                                                                     | 整型   | Storm组件的已用slot数。 取值范围为\[0～2147483646\]。                                         |
| 流式集群 | StormSlotUsedPercentage                                                           | 百分比  | Storm组件已用slot百分比。是已用slot数与总slot数的比值。 取值范围为\[0～100\]。                         |
| 流式集群 | StormSupervisorMemAverageUsage                                                    | 整型   | Storm组件Supervisor的内存平均使用量。 取值范围为\[0～2147483646\]。                               |
| 流式集群 | StormSupervisorMemAverageUsagePercentage                                          | 百分比  | Storm组件Supervisor进程使用的内存占系统总内存的平均百分比。 取值范围\[0 \~ 100\]。                          |
| 流式集群 | StormSupervisorCPUAverageUsagePercentage                                          | 百分比  | Storm组件Supervisor进程使用的CPU占系统总CPU的平均百分比。 取值范围\[0 \~ 6000\]。                        |
| 分析集群 | YARNAppPending                                                                    | 整型   | YARN组件挂起的任务数。 取值范围为\[0～2147483646\]。                                            |
| 分析集群 | YARNAppPendingRatio                                                               | 比率   | YARN组件挂起的任务数比例。是YARN挂起的任务数与YARN运行中的任务数比值。 取值范围为\[0～2147483646\]。               |
| 分析集群 | YARNAppRunning                                                                    | 整型   | YARN组件运行中的任务数。 取值范围为\[0～2147483646\]。                                         |
| 分析集群 | YARNContainerAllocated                                                            | 整型   | YARN组件中已分配的container个数。 取值范围为\[0～2147483646\]。                                |
| 分析集群 | YARNContainerPending                                                              | 整型   | YARN组件挂起的container个数。 取值范围为\[0～2147483646\]。                                    |
| 分析集群 | YARNContainerPendingRatio                                                         | 比率   | YARN组件挂起的container比率。是挂起的container数与运行中的container数的比值。 取值范围为\[0～2147483646\]。 |
| 分析集群 | YARNCPUAllocated                                                                  | 整型   | YARN组件已分配的虚拟CPU核心数。 取值范围为\[0～2147483646\]。                                   |
| 分析集群 | YARNCPUAvailable                                                                  | 整型   | YARN组件可用的虚拟CPU核心数。 取值范围为\[0～2147483646\]。                                      |
| 分析集群 | YARNCPUAvailablePercentage                                                        | 百分比  | YARN组件可用虚拟CPU核心数百分比。是可用虚拟CPU核心数与总虚拟CPU核心数比值。 取值范围为\[0～100\]。                   |
| 分析集群 | YARNCPUPending  | 整型   | YARN组件挂起的虚拟CPU核心数。 取值范围为\[0～2147483646\]。                                       |
| 分析集群 | YARNMemoryAllocated                                                               | 整型   | YARN组件已分配内存大小。单位为MB。 取值范围为\[0～2147483646\]。                                    |
| 分析集群 | YARNMemoryAvailable                                                               | 整型   | YARN组件可用内存大小。单位为MB。 取值范围为\[0～2147483646\]。                                     |
| 分析集群 | YARNMemoryAvailablePercentage                                                     | 百分比  | YARN组件可用内存百分比。是YARN组件可用内存大小与YARN组件总内存大小的比值。 取值范围为\[0～100\]。                     |
| 分析集群 | YARNMemoryPending                                                                 | 整型   | YARN组件挂起的内存大小。 取值范围为\[0～2147483646\]。                                          |
   
在添加资源计划时，可以参考[表2]配置相应的参数。
 表2资源计划配置项说明 
| 配置项    | 说明                                                                                                                                                         |
|:---|:---|
| 生效日期   | 资源计划的生效日期。默认是每日生效，也可以选择周一至周日任意一天或几天生效。                                                                                                                     |
| 时间范围   | 资源计划的起始时间和结束时间，精确到分钟，取值范围\[00:00, 23:59\]。例如资源计划开始于早上8:00，结束于10:00，则配置为8:00-10:00。结束时间必须晚于开始时间至少30分钟。不同资源计划配置的时间段不可交叉。                                     |
| 节点数量范围 | 资源计划内的节点数量上下限，取值范围\[0,500\]，在资源计划时间内，集群Task节点数量小于最小节点数时，弹性伸缩会将集群Task节点一次性扩容到最小节点数。在资源计划时间内，集群Task节点数量大于最大节点数时，弹性伸缩会将集群Task节点一次性缩容到最大节点数。最小节点数必须小于或等于最大节点数。 |
   
