MapReduce生产经验

楼高4个月前技术文章105

MapReduce程序效率的瓶颈在于两点:

1)计算机性能

(1)CPU、内存、磁盘、网络

2)I/O操作优化

(1)数据倾斜

(2)Map运行时间太长,导致Reduce等待过久

(3)小文件过多

下来就根据这两点瓶颈可以进行适当调优

map端:

1.自定义分区,减少数据倾斜,代码中定义类,继承Partitioner接口,重写getPartition方法

2.减少溢写的次数,mapreduce.task.io.sort.mb,Shuffle的环形缓冲区大小默认100m,可以提高到200m,mapreduce.map.sort.spill.percent,环形缓冲区溢出的阀值默认是80%,可以提高到90%

3.增加Merge合并次数,mapreduce.task.io.sort.factor默认是10,可以提高到20

4.在不影响业务的前提下提前Combiner

5.减少磁盘IO可以采用Snappy压缩

6.Mapreduce.map.memory.mb,默认MapTask内存1g,根据实际情况提高该内存

7.Mapreduce.map.java.opts,控制MapTask堆内存大小,如果内存不够报错oom

8.Mapreduce.map.cpu.vcores,默认MapTask的CPU核数1,如果计算比较密集可以增加CPU核数

9.异常重试,mapreduce.map.maxattempts,每个MapTask最大重试次数,一旦重试次数超过,认为MapTask失败,根据机器性能可以提高

reduce端:

1.mapreduce.reduce.shuffle.parallelcopies,每个Reduce去Map中拉去数据的并行数,默认值是5,可以适当提高

2.Mapreduce.reduce.shuffle.input.buffer.percent,Buffer大小占Reduce可用内存的比例,默认值0.7,可以提高到0.8

3.Mapreduce.reduce.shuffle.merge.percent,Buffer中的数据达到多少比例开始写入磁盘,默认值0.66,可以提高到0.75

4.Maperduce.reduce.memory.mb默认ReduceTask内存上限1g,128m数据对应1g内存原则,适当提高内存到4-6g

5.Mapreduce.reduce.java.opts,控制ReduceTask堆内存大小,和map一样如果内存不够报错oom

6.Mapreduce.reduce.cpu.vcores默认ReduceTask的CPU核数1个,可以提高到2-4个

7.Mapreduce.reduce.maxattempts每个Reduce Task最大重试次数,一旦重拾次数超过认为失败,根据机器性能适当提高

8.Mapreduce.job.reduces.slowstart.completedmaps当MapTask完成的比例达到该值后才会为ReduceTask申请资源。

能不用Reduce尽可能不用


相关文章

添加环境变量的两种方式

添加环境变量的两种方式

添加环境变量的几种方式:1.添加当前用户的PATH环境变量,作用范围仅限于当前用户修改用户目录下的 .bashrc修改后立即生效。vim ~/.bashrc2.添加所有用户的PATH环境变量,适用于所...

CDH-Impala集成ldap认证

CDH-Impala集成ldap认证

1、背景集群版本:cdh6.2.0impala版本:3.2.0+cdh6.2.0用户认证:AD由于用户需要使用数据库工具连接impala,但是集群开启了kerberos,如果使用数据库连接工具连接im...

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

说明Performance Counter是windows系统中通用的性能分析工具。Windows OS和SQL Server暴露了很多Performance Counter,可用户分析整个系统的运行...

CDH实操--CDH5.8.2升级(一)

CDH实操--CDH5.8.2升级(一)

1、摘要和概述本次升级是从cdh5.8.2升级至cdh6.2.1,由于cm对cdh的兼容性,需要先升级cm,从5.8.2升级至至6.2.1。2、升级CM2.1 CM安装文件2.2 CDH安装文件2.3...

Go 配置文件管理(ini)

Go 配置文件管理(ini)

1、背景ini 文件是 Initialization File 的缩写,即初始化文件,可用于统一管理各项配置。gopkg.in/ini.v1 是地表最强大、最方便和最流行的 Go 语言 INI 文件操...

mysql 事务隔离级别

mysql 事务隔离级别

一、事务隔离级别介绍多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据时的准确性。事务隔离级别      MySQL隔离级别定义了事务与事务之间的隔离程度  二...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。