• MapReduce 优化


    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增加,文档有建议参数






  • 相关阅读:
    Java笔记十:Java数组
    Java笔记九:Java内置的包装类(2)
    2019-2020-1 20199316《Linux内核原理与分析》第二周作业
    2019-2020-1 20199316《Linux内核原理与分析》第一周作业
    2019-2020-1 20199312《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199312《Linux内核原理与分析》第十一周作业
    2019-2020-1 20199312 《Linux内核原理与分析》 第九周作业
    要求用Windows下批处理和Linux下的shell脚本完成,两文本交替输出
    2019-2020-1 20199312 《Linux内核原理与分析》 第八周作业
    wait,waitpid学习测试
  • 原文地址:https://www.cnblogs.com/wanghzh/p/14927434.html
Copyright © 2020-2023  润新知