HDP 中 yarn 和 MR2 的配置
以下说明均以集群中 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 的配置的更多相关文章
- CDH集群中YARN的参数配置
CDH集群中YARN的参数配置 前言:Hadoop 2.0之后,原先的MapReduce不在是简单的离线批处理MR任务的框架,升级为MapReduceV2(Yarn)版本,也就是把资源调度和任务分发两 ...
- YARN内存使用优化配置
在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考 ...
- [Spark性能调优] 第四章 : Spark Shuffle 中 JVM 内存使用及配置内幕详情
本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Mem ...
- Spark Shuffle 中 JVM 内存使用及配置内幕详情
本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified M ...
- YARN 多租户资源池配置
简介: YARN 多租户资源池配置 当多用户同在一个 hadoop 集群作业时,就需要对资源进行有效的限制,例如区分测试.正式资源等 一.查看默认资源池 # 访问:http://192.168.1.2 ...
- [转] Spark-Sql On YARN自动调整Executor数配置
在所有的NodeManager中,修改yarn-site.xml,为yarn.nodemanager.aux-services添加spark_shuffle值,并设置yarn.nodemanager. ...
- 在Webpack 5 中如何进行 CSS 常用配置?
本文摘要:主要通过实操讲解运用Webpack 5 CSS常用配置的方法步骤 前文已谈到可以通过配置 css-loader 和 style-loader,使 webpack5 具有处理 CSS 资源的能 ...
- C#开发中使用配置文件对象简化配置的本地保存
C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...
- CentOS7中防火墙的一些常用配置
# 启动 systemctl start firewalld # 查看状态 systemctl status firewalld # 停止关闭 systemctl disable firewalld ...
随机推荐
- 记录一下学习Android的小知识
目前要设计即时通讯的整体架构,包括服务端.Android.IOS.PC.平板等等系统,所以需要研究一下手机的实现方式,开始从Android入手,偶尔在这记录下小知识. ADT: 1.页面功能请求结构, ...
- mul 指令
mul 是乘法指令 两个相乘的数:两个相乘的数,要么都是 8 位,要么都是 16 位. 如果是 8 位,一个默认放在 AL 中,另一个放在 8 位寄存器或内存字节单元中: 如果是 16 位,一个默认在 ...
- Python Twisted系列教程4:由Twisted支持的诗歌客户端
作者:dave@http://krondo.com/twisted-poetry/ 译者:杨晓伟(采用意译) 你可以在这里从头开始阅读这个系列. 第一个twisted支持的诗歌服务器 尽管Twist ...
- Usage of API documented as @since 1.8+”报错的解决办法
参考资料 1.https://blog.csdn.net/a499477783/article/details/78967586/
- json和pickle序列化模块
一.json序列化模块 1.序列化:将内存数据转成字符串加以保存. 2.反序列化:将字符串转成内存数据加以读取. data = { '北京':{ '五道口':{ 'sohu':'引擎', } } } ...
- The 1st day of learning Python
This is the first day of studying Python. From 3PM to now, It has taken me nearly 5 hours to 初步了解 py ...
- rdlc设置指定列隐藏
此用户帐户对提案名称列不可见
- HashMap和HashSet的相同点和不同点
Map集合,就是有一对属性值的集合,属性包含key,和value.关键字key是唯一不重复的.Map是一个有序的集合,所以查询起来速度很快.而HashSet就像是把HashMap中value去掉,说白 ...
- 无锁的同步策略——CAS操作详解
目录 1. 从乐观锁和悲观锁谈起 2. CAS详解 2.1 CAS指令 2.3 Java中的CAS指令 2.4 CAS结合失败重试机制进行并发控制 3. CAS操作的优势和劣势 3.1 CAS相比独占 ...
- day18-事务与连接池 1.复习
实际开发中事务必须得用.