首页技术文章正文

MapReduce性能优化策略(下)

更新时间:2022-04-14 来源:黑马程序员 浏览量:

  3.Reduce阶段

  (1)合理设置map和reduce数:两个都不能设置太少,也不能设置太多。太少,会导致task等待,延长处理时间;太多,会导致map和reduce任务间竞争资源,造成处理超时等错误。

  (2)设置map和reduce共存:调整slowstart.completedmaps参数,使map运行到一定程度后,reduce也开始运行,减少reduce的等待时间。

  (3)规避使用reduce:因为reduce在用于连接数据集的时候将会产生大量的网络消耗。通过将MapReduce参数setNumReduceTasks设置为0来创建一个只有map的作业。

  (4)合理设置reduce端的buffer:默认情况下,数据达到一个阈值的时候,buffer中的数据就会写入磁盘,然后reduce会从磁盘中获得所有的数据。也就是说,buffer和reduce是没有直接关联的,中间多一个写磁盘→读磁盘的过程,既然有这个弊端,那么就可以通过参数来配置,使得buffer中的一部分数据可以直接输送到reduce,从而减少I/O开销。这样一来,设置buffer需要内存,读取数据需要内存,reduce计算也要内存,所以要根据作业的运行情况进行调整。

  上面提到的属性参数,都是位于mapred-default.xml文件中,这些属性参数的调优方式如表4-2所示。

  表4-2 Reduce阶段的调优属性

1649905192171_Reduce阶段的调优属性.jpg

  4.Shuffle阶段

  Shuffle阶段的调优就是给Shuffle过程尽量多地提供内存空间,以防止出现内存溢出现象,可以由参数mapred.child.java.opts来设置,任务节点上的内存大小应尽量大一些。

  上面提到的属性参数,都是位于mapred-site.xml文件中,这些属性参数的调优方式如表4-3所示。

  表4-3 Shuffle阶段的调优属性

1649905263465_Shuffle阶段的调优属性.jpg

  5.其他调优属性

  除此之外,MapReduce还有一些基本的资源属性的配置,这些配置的相关参数都位于mapred-default.xml文件中,通过合理配置这些属性可以提高MapReduce性能,表4-4列举了部分调优属性。

  表4-4 MapReduce资源调优属性

1649905299232_MapReduce资源调优属性.jpg

分享到:
在线咨询 我要报名
和我们在线交谈!