zoukankan      html  css  js  c++  java
  • Hadoop优化

    一、影响MR程序效率的因素

      1.计算机性能:

      CPU、内存、磁盘、网络,

      计算机的性能会影响MR程序的速度与效率

      2.I/O方面

       1)数据倾斜(代码优化)

       2)map和reduce数量设置不合理(通过配置文件后代码中设置)

       3)map运行时间过长,导致reduce等待时间过长

       4)小文件过多(浪费元数据资源,CombineTextInputFormat)

       5)不可分快的超大文件(不断溢写)

       6)多个溢写小文件需要多次合并。

    二、MR的优化方法

      MR优化的六个方面:数据输入、map阶段、reduce阶段、IO传输、数据倾斜、参数调优

      1.数据输入

        1)合并小文件:在执行mr任务前就进行小文件合并

        2)采用CombineTextInputFormat来作为输入,解决输入端大量小文件的场景

        MR程序不适合处理大量小文件

      2.Map阶段

        1)减少溢写次数:

        //修改内存大小:mapreduce.task.io.sort.mb

        //修改默认溢写百分百:mapreduce.mps.sort.spill.percent

        2)减少合并次数

        //mapreduce.task.io.sort.factor,将merge值增大

        3)在shuffle阶段不影响业务逻辑情况下使用Combiner

      3.Reduce阶段

        1)设置合理的map与reduce个数

        //map可以通过文件切块的大小,或小文件合并改变maptask数量

        //reduce通过分区partitioner,setNumReduceTasks改变reducetask数量

        2)设置map/reduce共存

       //即map允许到一定程度后,启动reduce减少reduce的等待时间

       //mapreduce.job.reduce.slowstart.completedfmaps(参数越小reduce等待时间越少)

       //合理设置reduce端的buffer:mapreduce.reduce.markreset.buffer.percent

      4.数据传输

        1)数据压缩

        2)使用SequenceFile,它是二进制文件,使字节之间紧密度更高,提高效率。

      5.数据倾斜

        1)进行范围分区

        2)自定义分区

        3)Combiner

        4)能用map join坚决不用reduce join

      6.参数调优

        1)CPU

        //程序map阶段默认使用cpu核心数量:mapreduce.map.cpu.vcores

         //程序reduce阶段more使用cpu核心数量:mapreduce.reduce.cpu.vcores

        2)内存

        //一个maptask可以使用的最大内存:mapreduce.map.memory.mb

        //一个reducetask可以使用的最大内存:mapredcue.reduce.memory.mb

        3)并行度

        //reduce去map端拿数据时的并行度:mapreduce.reduce.shuffle.parallelcopies

  • 相关阅读:
    软件对标分析
    alpha内测版发布
    第一阶段项目评审
    第一阶段意见汇总
    冲刺(二十)
    冲刺(十九)
    冲刺(十八)
    冲刺(十七)
    冲刺(十六)
    冲刺(十五)
  • 原文地址:https://www.cnblogs.com/HelloBigTable/p/10669164.html
Copyright © 2011-2022 走看看