查看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
map端预聚合动作,不影响业务的情况下可以加
mapreduce.map.speculative
mapreduce.reduce.speculative
控制maptask执行到百分比(默认是所有maptask执行完,即100%),启动reducetask
开启该参数,默认是5%,mapreduce.job.reduce.slowstart.completedmaps
某个mr跑的慢,采用推测执行,防止节点故障
该节点上YARN可使用的虚拟CPU个数,默认是8。
目前推荐将该值设值为逻辑CPU核数的1.5~2倍之间
如果有几百上千的task数量,可以这么设置,增加ApplicationMaster 的内存大小
产生原因:
老年代有过多的长期存活对象导致的
full gc的时候,namenode无响应,导致hdfs集群无法使用
查看:
jstat -gc -t pid 1s
FGC full gc 次数
解决方案:
修改namenode内存大小,同时合并小文件
<100w 1G,100w 1g增加,文档有建议参数
原文:https://www.cnblogs.com/wanghzh/p/14927434.html