以下说明均以集群中 slave 结点的配置为 48G内存,12块硬盘,12核(core) CPU 为例。

在 Yarn 中,一个 Container 是一个基础的包含内存和CPU 的单元。为了较好的平衡利用集群的资源,通常建议每块磁盘和每个core 分配1~2 个 container。所以在上面的配置下,每个结点允许最大配置 20 个 container。

我们给 yarn 分配 40G内存,另外 8G留给操作系统。40G分配给 20 个 container,所以每个 container 分配到 2个G的内存。在 yarn-site.xml 中配置如下:

<property>
    <!-- 总共有多少资源可以被分配 -->
<name>yarn.nodemanager.resource.memory-mb</name>
<value></value>
</property> <property>
    <!-- 分配给AM单个容器可申请的最小内存 -->
<name>yarn.scheduler.minimum-allocation-mb</name>
<value></value>
</property>

MapReduce2 运行在 Yarn 之上,利用 container 去安排 Map 和 Reduce 任务, 配置 MR2 的资源,需要考虑以下三个方面:

(1)每个 map 和 reduce 任务的物理内存限制

(2)每个任务的 JVM 堆大小

(3)每个任务获得的虚拟内存的总量

每个 map 和 reduce 任务运行在不同的 container 中,因此 Map 和 reduce 最大的内存配置应该等于或大于 yarn.scheduler.minimum-allocation-mb 的值。

在 mapred-site.xml 里配置:

<property>
<!-- AM 中分配给map Container的内存大小 -->
<name>mapreduce.map.memory.mb</name>
<value></value>
</property> <property>
<!-- AM 中分配给 reduce container 的内存大小,一般为 map 的两倍 -->
<name>mapreduce.reduce.memory.mb</name>
<value></value>
</property>

每个 container 均会开启 JVM , JVM 的堆大小必须小于上面 Map 和 Reduce 的 memory 的配置。因此在 mapred-site.xml 中加入下面的配置:

<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx3072m</value>
</property> <property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx6144m</value>
</property>

上面配置了 Map 和 Reduce 使用的物理内存的上限。map 和 reduce 任务使用的虚拟内存(physical + paged memory)由 yarn container 允许的 ratio 决定。这个ratio 可以在 yarn-site.xml 中进行配置(2.1 是默认值):

<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>

综上所述,每个 map 任务可获得如下的内存分配:

(1) 物理 RAM = 4G

(2)map 任务的 container 的 JVM 的堆大小上限 = 3G

(3)虚拟内存上限 = 4*2.1 = 8.4G

总的来说,以 yarn.nodemanager. 开头的配置,配置的是硬件资源相关的东西, yarn.scheduler. 开头的配置,配置的是资源调度相关的,其值不能大于 yarn.nodemanager 中相关的资源限制。

HDP 中 yarn 和 MR2 的配置的更多相关文章

  1. CDH集群中YARN的参数配置

    CDH集群中YARN的参数配置 前言:Hadoop 2.0之后,原先的MapReduce不在是简单的离线批处理MR任务的框架,升级为MapReduceV2(Yarn)版本,也就是把资源调度和任务分发两 ...

  2. YARN内存使用优化配置

    在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考 ...

  3. [Spark性能调优] 第四章 : Spark Shuffle 中 JVM 内存使用及配置内幕详情

    本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Mem ...

  4. Spark Shuffle 中 JVM 内存使用及配置内幕详情

      本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified M ...

  5. YARN 多租户资源池配置

    简介: YARN 多租户资源池配置 当多用户同在一个 hadoop 集群作业时,就需要对资源进行有效的限制,例如区分测试.正式资源等 一.查看默认资源池 # 访问:http://192.168.1.2 ...

  6. [转] Spark-Sql On YARN自动调整Executor数配置

    在所有的NodeManager中,修改yarn-site.xml,为yarn.nodemanager.aux-services添加spark_shuffle值,并设置yarn.nodemanager. ...

  7. 在Webpack 5 中如何进行 CSS 常用配置?

    本文摘要:主要通过实操讲解运用Webpack 5 CSS常用配置的方法步骤 前文已谈到可以通过配置 css-loader 和 style-loader,使 webpack5 具有处理 CSS 资源的能 ...

  8. C#开发中使用配置文件对象简化配置的本地保存

    C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...

  9. CentOS7中防火墙的一些常用配置

    # 启动 systemctl start firewalld # 查看状态 systemctl status firewalld # 停止关闭 systemctl disable firewalld ...

随机推荐

  1. IDA Pro 权威指南学习笔记(二) - IDA 数据库文件

    生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 . ...

  2. 完美解决HALCON C#编程目标平台冲突问题

    完美解决HALCON C#编程目标平台冲突问题   楼主# 更多发布于:2016-11-23 10:06     背景: 目标机器工控机使用11.0.1 32位Halcon 原因你懂的.开发环境Win ...

  3. [原创]20行ruby代码实现依赖注入框架

    我需要依赖注入 业余时间开发的娱乐项目 (为了练习使用ruby语言) 遵循SRP原则,业务逻辑拆分由各个service类型提供,假设存在如下几个类型 GameService 封装主要游戏业务逻辑 Us ...

  4. 虚拟机之 LAMP

    LAMP 就是Linux apache mysql php 一.下载: 安装下载工具 yum install wget -y mysql:5.5.47 wget http://mirrors.sohu ...

  5. C51串口的SCON寄存器及工作…

    原文地址:C51串口的SCON寄存器及工作方式作者:batistar 一,串行口控制寄存器SCON 它用于定义串行口的工作方式及实施接收和发送控制.字节地址为98H,其各位定义如下表: D7 D6 D ...

  6. 19-从零玩转JavaWeb-继承关系与方法覆盖

    配套视频详解 继承子类与父类的关系 继承子类与父类的关系代码演示 继承方法的覆盖 方法覆盖原则 一.继承编写过程   二.子类可以继承父类当中哪些内容 可以自行把修饰符换下, 然后查看子类能不能访问 ...

  7. saltstack系列(六)——zmq扩展(二)

    问题 我们已经熟练的掌握了REQ/REP模式,它是一个一对多的模式,一个REP对应多个REQ. 但是现实工作中,我们会遇到这样的难题,一个REP无法满足REQ的提问,因为REQ太多了,虽然可以增加一个 ...

  8. laravel 中的Gates,以及修改模型

    Gates 是一个用于判断用户是否有权进行某项操作的闭包,通常使用Gate 门面定义在 App\Providers\AuthServiceProvider类中.Gates 总是接收用户实例作为第一个参 ...

  9. 9. Palindrome Number 回文数的判断

    [抄题]: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the sam ...

  10. 720. Longest Word in Dictionary 能连续拼接出来的最长单词

    [抄题]: Given a list of strings words representing an English Dictionary, find the longest word in wor ...