启用CGroups功能
配置场景
CGroups是一个Linux内核特性。它可以将任务集及其子集聚合或分离成具备特定行为的分层组。在YARN中,CGroups特性对容器(container)使用的资源(例如CPU使用率)进行限制。本特性大大降低了限制容器CPU使用的难度。
当前CGroups仅用于限制CPU使用率。
配置描述
有关如何配置CPU隔离与安全的CGroups功能的详细信息,请参见Hadoop官网:http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/NodeManagerCgroups.html
由于CGroups为Linux内核特性,是通过LinuxContainerExecutor进行开放。请参考官网资料对LinuxContainerExecutor进行安全配置。您可通过官网资料了解系统用户和用户组配置对应的文件系统权限。详情请参见:http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SecureMode.html#LinuxContainerExecutor
- 请勿修改对应文件系统中各路径所属的用户、用户组及对应的权限,否则可能导致本功能异常。
- 当参数“yarn.nodemanager.resource.percentage-physical-cpu-limit”配置过小,导致可使用的核不足1个时,例如4核节点,将此参数设置为20%,不足1个核,那么将会使用系统全部的核。Linux的一些版本不支持Quota模式,例如Cent OS。在这种情况下,我们可以使用CPUset模式。
配置cpuset模式,即YARN只能使用配置的CPU,需要添加以下配置。
参数 |
描述 |
默认值 |
---|---|---|
yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage |
设置为“true”时,应用以cpuset模式运行。 |
false |
配置strictcpuset模式,即container只能使用配置的CPU,需要添加以下配置。
参数 |
描述 |
默认值 |
---|---|---|
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”。
- 删除container文件夹(如果存在)。
- 删除cpuset.cpus文件中设置的所有CPU。