MapReduce 优化

摘要:
作业执行原则:1.使任务尽可能并发执行,合理控制maptask和reducetask的数量。2.尽可能在同一轮中完成所有reduceTask。3.任务执行时间应合理,maptasks和reducetask的执行时间应尽可能接近1minshuffle。在映射端进行调整:检查yarnweb接口的端口19888,单击左侧的计数器,然后单击map Reduce Framework CPU timepentGCtime

Job 执行原则:

  • 1.尽可能让任务并发执行,合理控制maptask和reducetask数量
  • 2.尽量让所有reduceTask在同一轮完成
  • 3.task的执行时间要合理,maptask 和reducetask的执行时间尽量靠近1min

shuffle调优:

Map 端调优:

查看yarn web界面19888 端口,点击左侧counters,Map-Reduce Framework

CPU time spent
GC time elapsed 当 GC/CPU <10% 说明当前maptask运行时间合理,
内存分配合理
maptask 默认1核 1G
如果GC占比高,可以调高内存
如果集群资源充足,maptask 内存给3G,cpu核数1
环形缓冲区大小调到512M,mapreduce.task.io.sort.mb=512
默认一次合并10个文件,可以调整到64 ,mapreduce.task.io.factor=64

Combine:

map端预聚合动作,不影响业务的情况下可以加

reduce端调优:

  • 压缩
  • reducetask 默认也是1核1G,一般reducetask 给5G的内存
  • reducetask 默认拉取数据是5个并行度,一般可以设置到50~100,mapreduce.reduce.shuffle.parallelcopies=100
  • 可以调整 reducetask 缓冲区大小,mapreduce.reduce.shuffle.input.buffer.percent(default 0.7)
  • reducetask 多次溢写后,要进行归并排序,默认10个归并排序一次 ,通过修改mapreduce.task.io.sort.factor =100
  • 推测执行:10个以下节点的集群关闭(推测执行,防止某一个节点故障,复制task去其它节点运行)

mapreduce.map.speculative
mapreduce.reduce.speculative
控制maptask执行到百分比(默认是所有maptask执行完,即100%),启动reducetask
开启该参数,默认是5%,mapreduce.job.reduce.slowstart.completedmaps

小文件优化:

  • 1.从源头,进入到hdfs就合并成大文件
  • 2.通过mr 合并 hdfs的小文件
  • 3.通过combineInputformat

数据倾斜:

  • 1.结合业务自定义分区
  • 2.key前加 随机数 key-n

某个mr跑的慢,采用推测执行,防止节点故障

YARN 调优:

  • yarn.nodemanager.resource.memory-mb 默认是8192
  • yarn.nodemanager.resource.cpu-vcores

该节点上YARN可使用的虚拟CPU个数,默认是8。
目前推荐将该值设值为逻辑CPU核数的1.5~2倍之间

  • yarn.app.mapreduce.am.resource.mb =10G

如果有几百上千的task数量,可以这么设置,增加ApplicationMaster 的内存大小

Namenode Full GC:

产生原因:

老年代有过多的长期存活对象导致的
full gc的时候,namenode无响应,导致hdfs集群无法使用

查看:

jstat -gc -t pid 1s
FGC full gc 次数

解决方案:
修改namenode内存大小,同时合并小文件
<100w 1G,100w 1g增加,文档有建议参数

免责声明:文章转载自《MapReduce 优化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot整合升级Spring Security 报错 【The request was rejected because the URL was not normalized】union的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

用python调用caffe时出错:AttributeError: 'module' object has no attribute 'bool_'

下面给出了一个解决方案,即重命名冲突的io文件:numpyと PyCaffe公司が io。年が 竞争す る よ で す$ pythonclassify。py--raw_scale255~/caffe/101_ObjectCategories/airaires/image_0001.jpg../result.npyTraceback:文件“classif.py...

Dto和Entity如何优雅的相互转换

什么是Dto,Entity,用来干什么?这个时候就有一个麻烦事,Entity和Dto的互转。通常的转换方法有两个途径,一个是通过反射的方式,来进行对象属性的复制;另一种是,通过硬编码进行对象属性的赋值;1.在service层中添加实体类转换函数@ServicepublicMyEntityService{publicSomeDtogetEntityById{S...

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试

XDMAIP使用部分教程分LINUX篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家XILINXFPGAPCIE应用解决方案。本教程以MK7160FA作为样机测试。这是一款高性价比的FPGA开发板。而M_AXI_LITE挂载的BRAM是需要进行BAR空间操作,所以地址设置为0x80000000...

java中cookie存取值

Cookie保存值:CookieuserCookie=newCookie(“loginInfo”,loginInfo);userCookie.setMaxAge(30*24*60*60);//生存期为一个月30*24*60*60userCookie.setPath(“/”);response.addCookie(userCookie);Cookie值:Coo...

zabbix监控华为交换机

xmlversion=“1.0”encoding=“UTF-8”?...

OA办公系统 Springboot vue.js 前后分离 跨域 Flowable 工作流

1.模型管理:web在线流程设计器,预览流程xml,导出xml,部署流程2.流程管理:导入和导出流程资源文件,查看流程图,根据流程实例反映流程模型,激活和挂起,自由跳转3.运行流程:查看流程信息,当前任务节点,当前流程图,作废和挂起流程,并分配待办事项人员4.历史流程:查看流程信息、流程时间流程状态、查看任务发起人信息5.待办任务:查看您的个人任务和此角色下...