组件参数配置

Web配置

对于参数的修改,Ambari基本都是在集群的网页上面修改即可,以Yarn组件为例,单击右边需要更改参数的组件Yarn,参数修改都是在对应组件的CONFIGS里面。修改配置的地方对应的就是在SETTING以及ADVANCED中,如下所示。

当要修改具体的参数的时候,主要分两种情况,第一种对于参数原本就在网页设置了初始值的,只需要在CONFIGS页面的搜索栏直接搜索、修改即可,例如修改Yarn中的yarn.nodemanager.resource.cpu-vcores,只需要在搜索框搜索“yarn.nodemanager.resource.cpu-vcores”,单击修改按钮,设置对应的参数即可。

第二种对于原本页面上没有设置初始值的参数,例如yarn.nodemanager.numa-awareness.enabled这一参数,就需要在对应组件的Custom yarn-site中手动添加(其余组件需要手动添加的也是在对应的Custom ***-site文件中)。

具体的各个组件的参数设置如下表所示。

组件

参数名

推荐值

修改原因

Yarn

->NodeManager

Yarn

->ResourceManager

ResourceManager Java heap size

1024

修改JVM内存大小,保证内存水平较高,减少GC的频率。

说明:

非固定值,需要根据GC的释放情况来调大或调小Xms及Xmx的值。

NodeManager Java heap size

1024

Yarn

->NodeManager

yarn.nodemanager.resource.cpu-vcores

鲲鹏计算平台48核环境推荐值48。

可分配给Container的CPU核数。

Yarn

->NodeManager

yarn.nodemanager.resource.memory-mb

与实际数据节点物理内存总量相等。

可分配给Container的内存。

Yarn

->NodeManager

yarn.nodemanager.numa-awareness.enabled

True

NodeManager启动Container时的Numa感知。

Yarn

->NodeManager

yarn.nodemanager.numa-awareness.read-topology

True

NodeManager的Numa拓扑自动感知。

MapReduce2

mapreduce.map.memory.mb

7168

一个Map Task可使用的内存上限。

MapReduce2

mapreduce.reduce.memory.mb

14336

一个Reduce Task可使用的资源上限。

MapReduce2

mapreduce.job.reduce.slowstart.completedmaps

0.35

当Map完成的比例达到该值后才会为Reduce申请资源。

HDFS

->NameNode

NameNode Java heap size

3072

修改JVM内存大小,保证内存水平较高,减少GC的频率。

说明:

非固定值,需要根据GC的释放情况来调大或调小Xms及Xmx的值。

NameNode new generation size

384

NameNode maximum new generation size

384

HDFS

->DataNode

dfs.datanode.handler.count

512

DataNode服务线程数,可适量增加。

HDFS

->NameNode

dfs.namenode.service.handler.count

32

NameNode RPC服务端监测DataNode和其他请求的线程数,可适量增加。

HDFS

->NameNode

dfs.namenode.handler.count

1200

NameNode RPC服务端监测客户端请求的线程数,可适量增加。

TEZ

tez.am.resource.memory.mb

7168

等同于yarn.scheduler.minimum-allocation-mb,默认7168。

TEZ

tez.runtime.io.sort.mb

1892MB

设置为40%*hive.tez.container.size,一般不超过2G。

TEZ

tez.am.container.reuse.enabled

true

Container重用开关。

TEZ

tez.runtime.unordered.output.buffer.size-mb

537

10%* hive.tez.container.size。

TEZ

tez.am.resource.cpu.vcores

10

使用的虚拟CPU数量,默认1,需要手动添加。

TEZ

tez.container.max.java.heap.fraction

0.85

基于Yarn提供的内存,分配给Java进程的百分比,默认是0.8,需要手动添加。

客户端配置

仅列出需要修改的调优参数。

表1 SQL1

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.compress.intermediate

TRUE

hive.tez.container.size

7168

表2 SQL2

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.compress.intermediate

TRUE

hive.exec.reducers.max

576

hive.tez.container.size

5120

表3 SQL3

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.exec.reducers.max

376

hive.tez.container.size

7168

表4 SQL4

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.tez.container.size

6148

表5 SQL5

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.tez.container.size

8192

表6 SQL6

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.reducers.max

365

hive.tez.container.size

7168

表7 SQL7

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.reducers.max

1

hive.tez.container.size

7168

表8 SQL8

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.tez.container.size

7168

表9 SQL9

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.reducers.max

365

hive.tez.container.size

7168

表10 SQL10

参数名

参数配置

hive.map.aggr

TRUE

hive.vectorized.execution.enabled

TRUE

hive.auto.convert.join

TRUE

hive.auto.convert.join.noconditionaltask

TRUE

hive.limit.optimize.enable

TRUE

hive.exec.parallel

TRUE

hive.cbo.enable

TRUE

hive.exec.reducers.max

120

hive.tez.container.size

7168