
# 启用Yarn CGroups功能限制Container CPU使用率
#### 配置场景
CGroups是一个Linux内核特性。它可以将任务集及其子集聚合或分离成具备特定行为的分层组。在Yarn中，CGroups特性对容器（Container）使用的资源（例如CPU使用率）进行限制。本特性大大降低了限制容器CPU使用的难度。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
当前CGroups仅用于限制CPU使用率。
本章节适用于MRS 3.x及后续版本集群。
#### 配置描述
有关如何配置CPU隔离与安全的CGroups功能的详细信息，请参见Hadoop官网：
MRS 3.2.0之前版本：<https://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/NodeManagerCgroups.html>
MRS 3.2.0及之后版本：<https://hadoop.apache.org/docs/r3.3.1/hadoop-yarn/hadoop-yarn-site/NodeManagerCgroups.html>
由于CGroups为Linux内核特性，是通过**LinuxContainerExecutor** 进行开放。请参考官网资料对**LinuxContainerExecutor**进行安全配置。您可通过官网资料了解系统用户和用户组配置对应的文件系统权限。详情请参见：
MRS 3.2.0之前版本：<https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SecureMode.html#LinuxContainerExecutor>
MRS 3.2.0及之后版本：<https://hadoop.apache.org/docs/r3.3.1/hadoop-project-dist/hadoop-common/SecureMode.html#LinuxContainerExecutor>
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 请勿修改对应文件系统中各路径所属的用户、用户组及对应的权限，否则可能导致本功能异常。
- 当参数"yarn.nodemanager.resource.percentage-physical-cpu-limit"配置过小，导致可使用的核不足1个时，例如4核节点，将此参数设置为20%，不足1个核，那么将会使用系统全部的核。Linux的一些版本不支持Quota模式，例如Cent OS。在这种情况下，可以使用CPUset模式。
 
配置cpuset模式，即Yarn只能使用配置的CPU，需要在Manager界面添加以下配置。
 表1cpuset配置 
| 参数                                                              | 描述                        | 默认值   |
|:---|:---|:---|
| yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage | 设置为"true"时，应用以cpuset模式运行。 | false |
   
配置strictcpuset模式，即Container只能使用配置的CPU，需要在Manager界面添加以下配置。
 表2CPU硬隔离参数配置 
| 参数                                                                      | 描述                            | 默认值   |
|:---|:---|:---|
| yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage         | 设置为"true"时，应用以cpuset模式运行。     | false |
| yarn.nodemanager.linux-container-executor.cgroups.cpuset.strict.enabled | 设置为true时，Container只能使用配置的CPU。 | false |
   
要从cpuset模式切换到Quota模式，必须遵循以下条件：
- 配置"yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage"="false"。
- 删除"/sys/fs/cgroup/cpuset/hadoop-yarn/"路径下container文件夹（如果存在）。
- 删除"/sys/fs/cgroup/cpuset/hadoop-yarn/"路径下cpuset.cpus文件中设置的所有CPU。
 
#### 操作步骤
1. 登录Manager系统。选择"集群 \> 服务 \> Yarn \> 配置"，选择"全部配置"。
2. 在左侧导航栏选择"NodeManager \> 自定义"，找到yarn-site.xml文件。
3. 添加[表1]和[表2]中的参数为自定义参数。
   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001210042031.png)
   根据配置文件与参数作用，在"yarn-site.xml"所在行"名称"列输入参数名，在"值"列输入此参数的参数值。
   单击"＋"增加自定义参数。
   
   
4. 单击"保存"，在弹出的"保存配置"窗口中确认修改参数，单击"确定"。界面提示"操作成功"，单击"完成"，配置保存成功。 
   保存完成后请重新启动配置过期的Yarn服务以使配置生效。
   
   
 
