确定HDP内存配置设置

 9.确定HDP内存配置设置

可以使用两种方法来确定YARN和MapReduce内存配置设置:

 

 

HDP实用程序脚本是计算HDP内存配置设置的推荐方法,但也提供了有关手动计算YARN和MapReduce内存配置设置的信息以供参考。

 9.1。使用HDP Utility脚本计算内存配置设置

本节介绍如何使用hdp-configuration-utils.py Python脚本根据节点硬件规范计算YARN,MapReduce,Hive和Tez内存分配设置。该 hdp-configuration-utils.py脚本包含在HDP 配套文件中

运行脚本

要运行该hdp-configuration-utils.py脚本,请从包含该脚本的文件夹中执行以下命令:

<span style="color:#555555"><span style="color:#23302d">python hdp-configuration-utils.py <options></span></span>

使用以下选项:

 

选项描述
-c CORES每台主机上的核心数。
-m MEMORY每个主机上的内存量,以GB为单位。
-d DISKS每台主机上的磁盘数。
-k HBASE如果安装了HBase,则为“True”,否则为“False”。

 

注意:您还可以使用-h或 --help选项显示描述选项的“帮助”消息。

运行以下命令:

<span style="color:#555555"><span style="color:#23302d">python hdp-configuration-utils.py -c 16 -m 64 -d 4 -k True</span></span>

会回来:

<span style="color:#555555"><span style="color:#23302d"> 使用cores = 16内存= 64GB磁盘= 4 hbase = True
 配置文件:cores = 16内存= 49152MB保留= 16GB usefulMem = 48GB磁盘= 4
 Num Container = 8
 容器Ram = 6144MB
 使用Ram = 48GB
 未使用的Ram = 16GB
 yarn.scheduler.minimum分配-MB = 6144
 yarn.scheduler.maximum分配-MB = 49152
 yarn.nodemanager.resource.memory-MB = 49152
 mapreduce.map.memory.mb = 6144
 mapreduce.map.java.opts = -Xmx4096m
 mapreduce.reduce.memory.mb = 6144
 mapreduce.reduce.java.opts = -Xmx4096m
 yarn.app.mapreduce.am.resource.mb = 6144
 yarn.app.mapreduce.am.command-选择采用= -Xmx4096m
 mapreduce.task.io.sort.mb = 1792
 tez.am.resource.memory.mb = 6144
 tez.am.java.opts = -Xmx4096m
 hive.tez.container.size = 6144
 hive.tez.java.opts = -Xmx4096m
 hive.auto.convert.join.noconditionaltask.size = 1342177000</span></span>

 9.2。手动计算YARN和MapReduce内存配置设置

本节介绍如何根据节点硬件规范手动配置YARN和MapReduce内存分配设置。

YARN会考虑群集中每台计算机上的所有可用计算资源。根据可用资源,YARN协商来自群集中运行的应用程序(例如MapReduce)的资源请求。然后,YARN通过分配容器为每个应用程序提供处理能力。Container是YARN中处理能力的基本单位,是资源元素(内存,cpu等)的封装。

在Hadoop集群中,平衡内存(RAM),处理器(CPU内核)和磁盘的使用至关重要,这样处理不受这些集群资源中的任何一个的限制。作为一般建议,允许每个磁盘和每个核心使用两个Container,从而为群集利用率提供最佳平衡。

在为群集节点确定适当的YARN和MapReduce内存配置时,请从可用的硬件资源开始。具体来说,请注意每个节点上的以下值:

  • RAM(内存量)

  • CORES(CPU内核数)

  • 磁盘(磁盘数)

YARN和MapReduce的总可用RAM应考虑保留内存。Reserved Memory是系统进程和其他Hadoop进程(例如HBase)所需的RAM。

保留内存=为堆栈内存保留+为HBase内存保留(如果HBase在同一节点上)

使用下表确定每个节点的预留内存。

保留的内存建议

 

每个节点的总内存推荐的预留系统内存推荐的预留HBase内存
4GB1 GB1 GB
8 GB2 GB1 GB
16 GB2 GB2 GB
24 GB4GB4GB
48 GB6 GB8 GB
64 GB8 GB8 GB
72 GB8 GB8 GB
96 GB12 GB16 GB
128 GB24 GB24 GB
256 GB32 GB32 GB
512 GB64 GB64 GB

 

下一个计算是确定每个节点允许的最大容器数。可以使用以下公式:

容器数量= min(2 * CORES,1.8 * DISKS,(总可用RAM)/ MIN_CONTAINER_SIZE)

其中MIN_CONTAINER_SIZE是最小容器大小(在RAM中)。此值取决于可用的RAM量 - 在较小的内存节点中,最小容器大小也应该更小。下表概述了建议值:

 

每个节点的总RAM建议的最小容器尺寸
小于4 GB256 MB
介于4 GB和8 GB之间512 MB
介于8 GB和24 GB之间1024 MB
超过24 GB2048 MB

 

最终的计算是确定每个容器的RAM量:

 

RAM-per-container = max(MIN_CONTAINER_SIZE,(总可用RAM)/容器))

 

通过这些计算,可以设置YARN和MapReduce配置:

配置文件配置设置价值计算
纱的site.xmlyarn.nodemanager.resource.memory-MB=容器* RAM-per-container
纱的site.xmlyarn.scheduler.minimum分配-MB=每个容器的RAM
纱的site.xmlyarn.scheduler.maximum分配-MB=容器* RAM-per-container
mapred-site.xml中mapreduce.map.memory.mb=每个容器的RAM
mapred-site.xml中        mapreduce.reduce.memory.mb= 2 * RAM-per-container
mapred-site.xml中mapreduce.map.java.opts= 0.8 *每个容器的RAM
mapred-site.xml中mapreduce.reduce.java.opts= 0.8 * 2 *每个容器的RAM
yarn-site.xml(检查)yarn.app.mapreduce.am.resource.mb= 2 * RAM-per-container
yarn-site.xml(检查)yarn.app.mapreduce.am.command-OPTS= 0.8 * 2 *每个容器的RAM

注意:安装后,既 yarn-site.xmlmapred-site.xml位于在/etc/hadoop/conf文件夹中。

 

例子

群集节点具有12个CPU核心,48 GB RAM和12个磁盘。

保留内存= 6 GB保留用于系统内存+(如果是HBase)8 GB用于HBase

最小容器大小= 2 GB

 

如果没有HBase:

容器数量= min(2 * 12,1.8 * 12,(48-6)/ 2)= min(24,21.6,21)= 21

RAM-per-container = max(2,(48-6)/ 21)= max(2,2)= 2

 

组态价值计算
yarn.nodemanager.resource.memory-MB= 21 * 2 = 42 * 1024 MB
yarn.scheduler.minimum分配-MB= 2 * 1024 MB
yarn.scheduler.maximum分配-MB= 21 * 2 = 42 * 1024 MB
mapreduce.map.memory.mb= 2 * 1024 MB
mapreduce.reduce.memory.mb         = 2 * 2 = 4 * 1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6 * 1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2 * 1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4 * 1024 MB
yarn.app.mapreduce.am.command-OPTS= 0.8 * 2 * 2 = 3.2 * 1024 MB

 

如果包含HBase:

容器数量= min(2 * 12,1.8 * 12,(48-6-8)/ 2)= min(24,21.6,17)= 17

RAM-per-container = max(2,(48-6-8)/ 17)= max(2,2)= 2

 

组态价值计算
yarn.nodemanager.resource.memory-MB= 17 * 2 = 34 * 1024 MB
yarn.scheduler.minimum分配-MB= 2 * 1024 MB
yarn.scheduler.maximum分配-MB= 17 * 2 = 34 * 1024 MB
mapreduce.map.memory.mb= 2 * 1024 MB
mapreduce.reduce.memory.mb         = 2 * 2 = 4 * 1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6 * 1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2 * 1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4 * 1024 MB
yarn.app.mapreduce.am.command-OPTS= 0.8 * 2 * 2 = 3.2 * 1024 MB

 

笔记:

  1. yarn.scheduler.minimum-allocation-mb不改变的情况下进行更改yarn.nodemanager.resource.memory-mb,或者在yarn.nodemanager.resource.memory-mb不改变的 情况下进行更改 yarn.scheduler.minimum-allocation-mb也会更改每个节

  2. 如果您的安装具有高RAM但没有多少磁盘/核心,则可以通过降低yarn.scheduler.minimum-allocation-mb和 来释放RAM以执行其他任务yarn.nodemanager.resource.memory-mb

 9.2.1。在YARN上配置MapReduce内存设置

MapReduce在YARN之上运行,并利用YARN Containers来安排和执行Map and Reduce任务。在YARN上配置MapReduce资源利用率时,需要考虑三个方面:

 

  • 每个Map和Reduce任务的物理RAM限制。

  • 每个任务的JVM堆大小限制。

  • 每个任务将接收的虚拟内存量。

 

您可以为每个Map和Reduce任务定义最大内存量。由于每个Map和Reduce任务都将在一个单独的Container中运行,因此这些最大内存设置应等于或大于YARN最小Container分配。

对于上一节中使用的示例群集(48 GB RAM,12个磁盘和12个核心),Container的最小RAM(yarn.scheduler.minimum-allocation-mb)= 2 GB。因此,我们将为Map任务容器分配4 GB,为Reduce任务容器分配8 GB。

在  mapred-site.xml

<span style="color:#555555"><span style="color:#23302d"><名称> mapreduce.map.memory.mb </名称>
<值> 4096 </值>
<名称> mapreduce.reduce.memory.mb </名称>
<值> 8192 </值></span></span>

每个Container都将运行JVM以执行Map和Reduce任务。JVM堆大小应设置为低于Map和Reduce Containers的值,以便它们在YARN分配的Container内存的范围内。

在  mapred-site.xml

<span style="color:#555555"><span style="color:#23302d"><名称> mapreduce.map.java.opts </名称>
<值> -Xmx3072m </值>
<名称> mapreduce.reduce.java.opts </名称>
<值> -Xmx6144m </值></span></span>

上述设置配置Map和Reduce任务将使用的物理RAM的上限。每个Map和Reduce任务的虚拟内存(物理+分页内存)上限由允许每个YARN Container的虚拟内存比确定。此比率使用以下配置属性设置,默认值为2.1:

在  yarn-site.xml

<span style="color:#555555"><span style="color:#23302d"><名称> yarn.nodemanager.vmem-PMEM比率</名称>
<值> 2.1 </值></span></span>

通过我们示例集群上的上述设置,每个Map任务将接收以下内存分配:

  • 分配的物理RAM总量= 4 GB

  • Map任务Container中的JVM堆空间上限= 3 GB

  • 虚拟内存上限= 4 * 2.1 = 8.2 GB

使用YARN上的MapReduce,不再为Map和Reduce任务预先配置静态插槽。整个群集可用于根据每个作业的需要动态分配Map和Reduce任务。在我们的示例集群中,通过上述配置,YARN将能够在每个节点上分配多达10个Mappers(40/4)或5个Reducers(40/8)(或者每个节点上的Mapper和Reducers的一些其他组合)节点限制)。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值