一、相关配置情况
1.1RM的内存资源配置,配置的是资源调度相关
RM1:yarn.scheduler.minimum-allocation-mb分配给AM单个容器可申请的最小内存
RM2:yarn.scheduler.maximum-allocation-mb分配给AM单个容器可申请的最大内存
注:
l最小值可以计算一个节点最大Container数量
l一旦设置,不可动态改变
1.2NM的内存资源配置,配置的是硬件资源相关
NM1
NM2
注:
lRM1
lNM1可以计算节点最大最大Container数量,max(Container)=NM1/RM2
l一旦设置,不可动态改变
1.3AM内存配置相关参数,配置的是任务相关
AM1Container的内存大小
AM2Container的内存大小
l这两个值应该在
lAM2
l这两个值可以在启动时改变
AM3
AM4
注:
1.
二、对于这些配置概念的理解
知道有这些参数,还需理解其如何分配,下面我就一副图让大家更形象的了解各个参数的含义。
如上图所示,先看最下面褐色部分,
AM,这定义了实际分配给。
AM略微小于mapreduce.map.memory.mb=1536MB这个值。
NM若实际用到的内存超过这个值,。
AMreduceContainer。
NM用来执行
上图中分配给AMmap/reduceContainer的最大值和最小值。
三、关于任务提交过程3.1任务提交过程
步骤
步骤
步骤
步骤
3.2关于Container
(Container没有任何关系,仅仅是
(
(Container运行时需提供内部执行的任务命令(可以使任何命令,比如
另外,一个应用程序所需的Container分为两大类,如下:
(Container:这是由
(
以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。
Container是望大家好好理解。
注意:如下图,mapreduce.map(reduce).memory.mb大小都大于mapreduce.map(reduce).java.opts值的大小。
四、HDP平台参数调优建议
根据上面介绍的相关知识,我们就可以根据我们的实际情况作出相关参数的设置,当然还需要在运行测试过程中不断检验和调整。
以下是hortonworks给出的配置建议:
4.1 内存分配
ReservedMemory=Reservedforstackmemory+ReservedforHBaseMemory(IfHBaseisonthesamenode)
系统总内存
下面的计算假设
4.2containers计算:
MIN_CONTAINER_SIZE=2048MB
containers=min(2*CORES,1.8*DISKS,(TotalavailableRAM)/MIN_CONTAINER_SIZE)
#ofcontainers=min(2*12,1.8*12,(78*1024)/2048)
#ofcontainers=min(24,21.6,39)
#ofcontainers=22
container内存计算:
RAM-per-container=max(MIN_CONTAINER_SIZE,(TotalAvailableRAM)/containers))
RAM-per-container=max(2048,(78*1024)/22))
RAM-per-container=3630MB
4.3Yarn
yarn.nodemanager.resource.memory-mb=containers*RAM-per-container
yarn.scheduler.minimum-allocation-mb =RAM-per-container
yarn.scheduler.maximum-allocation-mb =containers*RAM-per-container
mapreduce.map.memory.mb =RAM-per-container
mapreduce.reduce.memory.mb =2*RAM-per-container
mapreduce.map.java.opts =0.8*RAM-per-container
mapreduce.reduce.java.opts =0.8*2*RAM-per-container
yarn.nodemanager.resource.memory-mb =22*3630MB
yarn.scheduler.minimum-allocation-mb =3630MB
yarn.scheduler.maximum-allocation-mb =22*3630MB
mapreduce.map.memory.mb =3630MB
mapreduce.reduce.memory.mb =22*3630MB
mapreduce.map.java.opts =0.8*3630MB
mapreduce.reduce.java.opts =0.8*2*3630MB
附:规整化因子介绍
为了易于管理资源和调度资源,
比如,在yarn-site.xml中设置,相关参数如下:
yarn.scheduler.minimum-allocation-mb:最小可申请内存量,,默认是1024
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-mb:最大可申请内存量,默认是8096
yarn.scheduler.maximum-allocation-vcores
对于规整化因子,不同调度器不同,具体如下:
FIFO
FairScheduler
通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如
人若勇敢就是自己最好的朋友