现在的位置: 首页 > 综合 > 正文

MapReduce的job调优

2018年05月20日 ⁄ 综合 ⁄ 共 646字 ⁄ 字号 评论关闭

1:如果存在大量的小数据文件,那么就会建立很多的Map和Reduce任务,Map和Reduce任务都是进程,进程的创建需要很多的资源消耗,那么会造成Map和Reduce任务的

创建时间比计算任务的时间要长,非常不划算。

2:推测执行可能会浪费多余的资源,所以为了资源的更充分利用,我们把它关闭,在资源不紧张的时候可以开启。

3:开启jvm重用后,就不必开启一些进程,节省了资源和时间。

4:增加InputSplit大小,因为一个InputSplit对应一个Map任务,InputSplit少了,那么Map任务就少了,那么占用的资源就少了。

5:增大map输出的缓存, 当map输出缓存满时,需要写到Linux本地磁盘,如果缓存太小,那么写磁盘次数增加,磁盘的I/O增加。

6:增加合并spill文件数量,map输出缓存里的数据写到磁盘的过程叫做Spill, 如果一个文件很大的话,那么会在磁盘上产生很多文件,map端最后会把这些文件

合并为一个文件,过程为合并,如果增加合并spill文件数量的话,那么合并的次数会减少,

7:map端输出压缩,占用的磁盘少,占用网络带宽少。

8:增大shuffle复制线程数,shuffle即数据从map端送到reduce端的过程,从reduce端发起请求,在map端通过Http协议复制过去,复制的时候,并发线程数增加,那么

吞吐量增大,时间减少:,网络带宽的占用就高了。

9:设置单个节点的map和reduce执行数量,任务数增加,那么单机可以执行更多的任务,但是内存占用会增加。

【上篇】
【下篇】

抱歉!评论已关闭.