Cloudera Operation

                Cloudera Operation

 

 

博主推荐阅读:

         https://www.cloudera.com/documentation/enterprise/5-15-x/topics/operation.html

 

 

 

 

一.HDFS调优

 

 

二.MapReduc调优

 

三.YARN调优

1>.NodeManager应用程序日志的保留持续时间(默认3小时,即10800s),推荐值:24小时(即86400s)或更长。

2>.启用日志聚合 yarn.log-aggregation-enable和日志聚合保留期 yarn.log-aggregation.retain-seconds

3>.指定NodeManager在HDFS中存储聚合日志路径(yarn.nodemanager.remote-app-log-dir,默认为:/tmp/logs)和设置HDFS原创目录的名称(yarn.nodemanager.remote-app-log-dir-suffix,默认为logs)

4>.定义聚合日志保留时间(yarn.log-aggregation.retain-seconds,推荐保留7天即可)

5>.我们为操作系统预留10%的内存,分配YARN作业可用总共可用内存(yarn.nodemanager.resource.memory-mb,默认值为8G,也就是说,不管你服务器多大内存,只要你不分配,再多内存也百搭~

6>.配置最小容器内存 yarn.scheduler.minimum-allocation-mb,关于如何确定容器最小尺寸没有具体规则,都是根据经验来设定的。有网友说如果YARN每个节点上的可用内存小于24G推荐设置为1G,如果高于24G一般设置为2GB(一般来说,每个磁盘和每个核心运行1~2个容器,我实际环境是128G内存,12 * 8T磁盘,32core,由于上面我们分配的可用内存为112G,因此我使用公式112/(12+32)=2,于是我设置我的集群最小容器为2GB)。

7>.配置最大容器内存(yarn.scheduler.maximum-allocation-mb,我们定义的最大容器内存不能超过我们之前配置的yarn.nodemanager.resource.memory-mb的值,但是我们可以配置为和它相同大小)。

8>.Map 任务物理内存分配 (mapreduce.map.memory.mb,对于map任务的大小应该为多大,没有任何硬性的规则,除了它们的大小必须至少等于YARN容器的最小大小外。默认为1G,我这里设置为2G,由于总内存为112GB,因此最多可以跑56个map任务,我们知道这是一种极端的情况,因为有一些MapReduce任务可能没有任何reduce任务)

9>.Reduce 任务物理内存分配 (mapreduce.reduce.memory.mb,对于reduce任务的大小应该为多大,没有任何硬性的规则,除了它们的大小必须至少等于YARN容器的最小大小外。默认为1G,我这里设置为4G,即设置reduce为map任务的2倍)

10>.为map的JVM指定内存大小(mapreduce.map.java.opts,对于JVM堆大小没有一个硬性的原则,一般来说,占据JVM的容器大小的三分之二或者四分之三比较合适。有网友说改值为200MB,建议调大改值,我这里配置为1576MB,这个值大约为map任务容器的75%)

11>.为reduce的JVM指定内存大小(mapreduce.reduce.java.opts,对于JVM堆大小没有一个硬性的原则,一般来说,占据JVM的容器大小的三分之二或者四分之三比较合适。有网友说改值为200MB,建议调大改值,我这里配置为3072MB,这个值大约为reduce任务容器的75%)

12>.配置每个节点的最大虚拟CPU内核数(yarn.nodemanager.resource.cpu-vcores,默认值是8,即默认是8个虚拟内核,如果节点具有多个内核,则需要相应地配置此参数的值,否则YARN将使用8个虚拟内核,无论节点具有多少个CPU内核!推荐将一个物理core虚拟成2个,比如我的物理服务器有32core,但我在配置虚拟内核时指定为64core)

13>.配置每个节点的虚拟内存后,可以配置ResourceManager为每个容器请求的虚拟内存的最小数量(yarn.scheduler.minimum-allocation-vcores,默认值为1,默认即可)

14>.配置每个节点的虚拟内存后,可以配置ResourceManager为每个容器请求的虚拟内存的最大数量(yarn.scheduler.maximum-allocation-vcores,默认值是8,推荐设置和ResourceManager节点的最大虚拟内核数一样大,由于我配置的每个节点的虚拟内核数为64,因此我允许让其获取最大值也为64.)

15>.还可以配置每个map任务的虚拟内核数( mapreduce.map.cpu.vcores,默认值为1)

16>.还可以配置每个reduce任务的虚拟内核数( mapreduce.reduce.cpu.vcores,默认值为1)

17>.

 

18>.

 

19>.

 

20>.

 

 

posted @ 2019-05-21 11:09  尹正杰  阅读(256)  评论(0编辑  收藏  举报