Hadoop3.2.0 YARN CGroup

CGroups是一种机制,用于将任务集及其所有未来子集聚合/分区为具有专门行为的层次组。CGroups是Linux内核功能,并且已合并到内核版本2.6.24中。从YARN的角度来看,这允许容器的资源使用受到限制。一个很好的例子是CPU使用率。没有CGroups,就很难限制容器CPU的使用。

CGroups配置

本节介绍使用CGroup的配置变量。

以下设置与设置CGroup有关。这些需要在yarn-site.xml中设置。

配置名称 描述
yarn.nodemanager.container-executor.class 这应该设置为“org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor”。CGroups是Linux内核功能,通过LinuxContainerExecutor公开。
yarn.nodemanager.linux-container-executor.resources-handler.class 这应该设置为“org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler”。使用LinuxContainerExecutor不会强制您使用CGroup。如果要使用CGroup,则必须将resource-handler-class设置为CGroupsLCEResourceHandler。
yarn.nodemanager.linux-container-executor.cgroups.hierarchy 用于放置YARN的cgroups层次结构(不能包含逗号)。如果yarn.nodemanager.linux-container-executor.cgroups.mount为false(即,如果已经预先配置了cgroup)并且YARN用户具有对父目录的写访问权限,则将创建该目录。如果该目录已存在,则管理员必须以递归方式向其授予YARN写入权限。
yarn.nodemanager.linux-container-executor.cgroups.mount LCE是否应该尝试安装cgroup如果没有找到 - 可以是真或假。
yarn.nodemanager.linux-container-executor.cgroups.mount-path 可选的。CGroups的位置。如果yarn.nodemanager.linux-container-executor.cgroups.mount为true ,LCE将尝试在此处挂载它们。如果yarn.nodemanager.linux-container-executor.cgroups.mount为false ,LCE将尝试使用此位置的CGroup。如果指定,则此路径及其子目录(CGroup层次结构)必须存在,并且在启动NodeManager之前,它们应该是YARN可读写的。有关详细信息,请参阅下面的CGroups挂载选项
yarn.nodemanager.linux-container-executor.group NodeManager的Unix组。它应该与“container-executor.cfg”中的设置匹配。验证容器执行二进制文件的安全访问需要此配置。

以下设置与限制YARN容器的资源使用有关:

配置名称 描述
yarn.nodemanager.resource.percentage-physical-cpu-limit 此设置允许您限制所有YARN容器的CPU使用率。它为容器的累计CPU使用量设置了硬上限。例如,如果设置为60,则所有YARN容器的组合CPU使用率不会超过60%。
yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage CGroups允许cpu使用限制变硬或变软。如果此设置为true,则即使备用CPU可用,容器也不能使用比分配的CPU更多的CPU使用率。这可确保容器只能使用已分配的CPU。设置为false时,容器可以使用备用CPU(如果可用)。应该注意的是,无论是否设置为true或false,所有容器的组合CPU使用率都不会超过“yarn.nodemanager.resource.percentage-physical-cpu-limit”中指定的值。

CGroups挂载选项

YARN通过内核安装到文件系统中的目录结构使用CGroup。连接CGroups有三个选项。

选项 描述
Discover CGroups mounted already

这应该用在较新的系统上,如RHEL7或Ubuntu16,或者管理员在YARN启动之前安装CGroups。将yarn.nodemanager.linux-container-executor.cgroups.mount设置为false并将其他设置保留为默认值。YARN将在

/proc/mounts中找到挂载点。常见位置包括/sys/fs/cgroup和/cgroup。默认位置可能因使用的Linux发行版而异。

CGroups mounted by YARN 重要信息:由于安全原因,此选项已弃用,默认情况下为container-executor.cfg选项feature.mount-cgroup.enabled = 0。请在启动YARN之前挂载cgroup。
CGroups mounted already or linked but not in /proc/mounts 如果cgroup可通过lxcfs访问或由其他文件系统模拟,则将yarn.nodemanager.linux-container-executor.cgroups.mount-path指向您的CGroups根目录。将yarn.nodemanager.linux-container-executor.cgroups.mount设置为false。在任何CGroup挂载点发现之前,YARN首先尝试使用此路径。该路径应具有每个CGroup层次结构的子目录,该子目录由支持的逗号分隔的CGroup子系统命名,如<path> / cpu,cpuacct。有效的子系统名称是cpu,cpuacct,cpuset,memory,net_cls,blkio,freezer,devices。

CGroups和安全

CGroup本身没有与安全性相关的要求。但是,LinuxContainerExecutor确实有一些要求。如果以非安全模式运行,默认情况下,LCE以“nobody”用户身份运行所有作业。可以通过将“yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user”设置为所需用户来更改此用户。但是,它也可以配置为在用户提交作业时运行作业。在这种情况下,“yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users”应设置为false。

yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users User running jobs
  (default) nobody
yarn (default) yarn
yarn false (User submitting th job)

原文链接: https://hadoop.apache.org/docs/r3.2.0/

展开阅读全文

没有更多推荐了,返回首页