Hadoop 3.1.1 - Yarn - 使用 CGroups

在 Yarn 上使用 CGroups

CGroups 是一种将任务及其子任务聚集和划分进一个垂直的分组的策略,并提供在此结构上的特别的操作。CGroups 是 Linux 内核功能,自内核版本 2.6.24 被引入。从 Yarn 角度,该功能使得限额容器的资源使用成为可能。一个示例是 CPU 使用,如果没有 CGroups,限制容器的 CPU 使用非常困难。

CGroups 配置

本节描述 CGroups 相关的配置参数。

以下参数和启动 CGroups 有关。请在 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 并不强制使用 CGroups。如果你想使用,resource-handler-class 必须设置为 CGroupsLCEResourceHandler。
yarn.nodemanager.linux-container-executor.cgroups.hierarchy 放置 Yarn 进程的 CGroups 目录(不能由逗号)。如果 yarn.nodemanager.linux-container-executor.cgroups.mount 为 false(即必须预先配置 CGroups),且 Yarn 用户对父目录由写权限,那么这个目录将被创建。如果已经存在,管理员必须沿着 CGroups 目录递归地授予 Yarn 写权限。
yarn.nodemanager.linux-container-executor.cgroups.mount 如果没有发现,LinuxContainerExecutor 是否尝试挂载 CGroups。取值是 true 或 false。
yarn.nodemanager.linux-container-executor.cgroups.mount-path 可选参数,指明 CGroups 的目录。如果 yarn.nodemanager.linux-container-executor.cgroups.mount 为 true,LinuxContainerExecutor 将尝试挂载资源到这里;否则,LinuxContainerExecutor 会使用该目录的 CGroups。如果该参数被配置,那么在 NodeManager 启动前,给定的目录及其子目录(CGroups 垂直结构)必须存在,并且 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 资源,这确保了容器只能使用分配的资源量。如果该参数为 false,容器将可以使用空闲的 CPU 资源。需要注意的是,无论该参数是 true 还是 false,所有容器总的 CPU 使用率依然不能超过 yarn.nodemanager.resource.percentage-physical-cpu-limit 定义的值。

CGroups 挂载选项

Yarn 通过一个由内核挂载进文件系统的目录使用 CGroups。以下是附加到 CGroups 的选项。

选项 描述
已经发现挂载的 CGroups 应该在更新的操作系统(如 RHEL7 和 Ubuntu16) 或者管理员在 Yarn 启动前已经挂载了 CGroups的情况下,启用该选项。设定 yarn.nodemanager.linux-container-executor.cgroups.mount 为 false 且其他参数采用默认值,Yarn 将会在在 /proc/mounts 目录下寻找挂载点。常见的路径包括 /sys/fs/cgroup 和 /cgroup。不同 Linux 发行版本的默认路径可能大不相同。
由 Yarn 挂载 CGroups 警告:该选项因为安全原因已经被淘汰。默认情况下,container-executor.cfg 文件中设定了 feature.mount-cgroup.enabled=0。请在启动 Yarn 前挂载 CGroups。
CGroups 已经挂载或者链接了但不在路径 /proc/mounts 下 如果可以通过 lxcfs (或者由其他文件系统模拟出)访问 Cgroups,请将 yarn.nodemanager.linux-container-executor.cgroups.mount-path 指向你的 CGroups 根目录,并设定 yarn.nodemanager.linux-container-executor.cgroups.mount 为 false,Yarn 在发现其他 CGroup 挂载点前,将首先使用该路径。该路径下对于每一个 CGroup 都存在一个子目录,名称由 CGroup 子系统用逗号分隔,如 <path>/cpu,cpuacct。有效的子系统名称由 cpu、cpuacct、cpuset、memory、net_cls、blkio、freezer和devices

CGroups 和安全

CGroups 本身并没有和安全相关的配置,但 LinuxContainerExecutor 有需求。如果运行在非安全模式下(默认),LinuxContainerExecutor 会用 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 运行作业的账户名
(default) (default) nobody
yarn (default) yarn
yarn false (User submitting the job)

原文地址:https://www.cnblogs.com/shishaochen/p/9655661.html

时间: 2024-11-09 00:49:14

Hadoop 3.1.1 - Yarn - 使用 CGroups的相关文章

Hadoop新MapReduce框架Yarn详解

简介 本文介绍了Hadoop自0.23.0版本后新的MapReduce框架(Yarn)原理,优势,运行机制和配置方法等,着重介绍新的yarn框架相对于原框架的差异及改进,并通过Demo示例详细介绍了在新的Yarn框架下搭建和开发Hadoop程序的方法.读者通过本文中新旧Hadoop MapReduce框架的对比,更深刻理解新的yarn框架技术与那里和设计思想,文中的Demo代码经过微小修改既可用于用户基于Hadoop新框架的实际生产环境. Hadoop MapReduceV2(Yarn)框架简介

Hadoop 新 MapReduce 框架 Yarn 详解

原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介.使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框架图: 图 1.Hadoop 原 MapReduce 架构 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobCli

[译]下一代的Hadoop Mapreduce – 如何编写YARN应用程序

1. [译]下一代的Hadoop Mapreduce – 如何编写YARN应用程序 http://www.rigongyizu.com/hadoop-mapreduce-next-generation-writing-yarn-applications/

Hadoop MapReduce2.0(Yarn)

MapReduce2.0(Yarn) MapReduce2.0是在Hadoop0.23开始采用的,叫做MapReduce2.0或者MRv2或者Yarn. MRv2的主要思想是把jobtracker的任务分为两个基本的功能,一个是资源管理,一个是任务监控,这两个任务分别用不同的进程来运行.这个想法使拥有一个全局的资源管理器(ResourceManager)和每个应用程序的应用程序管理器(ApplicationMaster).一个应用程序要么使用传统的MapReduce任务来运行,要么以DAG形式的

Hadoop 3.1.1 - Yarn - 使用 GPU

在 Yarn 上使用 GPU 前提 目前,Yarn 只支持 Nvidia GPU. YARN NodeManager 所在机器必须预先安装了 Nvidia 驱动器. 如果使用 Docker 作为容器的运行时上下文,需要安装 nvidia-docker 1.0(这是 Yarn 当前所能支持的版本). 配置 GPU 调度 在 resource-types.xml,添加如下配置 <configuration> <property> <name>yarn.resource-ty

解析Hadoop新一代MapReduce框架Yarn

背景 Yarn是一个分布式的资源管理系统,用以提高分布式的集群环境下的资源利用率,这些资源包括内存.IO.网络.磁盘等等.其产生的原因是为了解决原MapReduce框架的不足.最初MapReduce的committer们还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得原来越困难,所以MapReduce的committer们决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/Yarn

更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)

摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,随着需求的发展,Yarn 框架浮出水面,@依然光荣复兴的 博客给我们做了很详细的介绍,读者通过本文中新旧 Hadoop MapReduce 框架的对比,更能深刻理解新的 y

hadoop多机安装YARN

hadoop伪分布安装称为测试环境安装,多机分布称为生成环境安装.以下安装没有进行HA(热备)和Federation(联邦).除非是性能需要,否则没必要安装Federation,HA可以一试,涉及到Zookeeper自动切换. 准备工作 1) linux优化 ①安装虚拟机linux系统,采用1.2 中的CentOS调优所有步骤,关闭防火墙:②设置网络为桥接模式(编辑虚拟机设置->网络适配器),查看自动分配ip或手动配置ip:③等JDK安装的JAVA_HOME(见1.3.1)和HADOOP_HOM

Apache hadoop namenode ha和yarn ha ---HDFS高可用性

HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时间--当NameNode失效的时候,Secondary NN并无法立刻提供服务,Secondary NN甚至无法保证数据完整性--如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失NameNode扩展性问题:单NameNode元数据不可扩展,是整个HDFS集群的瓶颈 Hadoop HDFS高