suifeng3051的专栏

一、相关配置情况

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

通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如

人若勇敢就是自己最好的朋友

suifeng3051的专栏

相关文章:

你感兴趣的文章:

标签云: