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

  • 相关阅读:
    用SSH指令批量修改文件夹 文件权限和拥有者
    magento转移服务器和magento建立多站点总结
    ssh 命令
    magento缓存系列详解:clean cache
    如何配置magento免运费商品方法
    Magento后台订单显示产品图片的修改方法
    如何在magento后台增加一个自定义订单状态
    Magento路径函数getBaseUrl使用方法
    图解HTTPS
    php 数组 添加元素、删除元素
  • 原文地址:https://www.cnblogs.com/HelloBigTable/p/10669164.html
Copyright © 2011-2022 走看看