一、影响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

Hadoop优化的更多相关文章

  1. 学习笔记:Twitter核心数据类库团队的Hadoop优化经验

    一.来源 Streaming Hadoop Performance Optimization at Scale, Lessons Learned at Twitter (Data platform @ ...

  2. 关注云端搜索技术:elasticsearch,nutch,hadoop,nosql,mongodb,hbase,cassandra 及Hadoop优化

    http://www.searchtech.pro/ Hadoop添加或调整的参数: 一.hadoop-env.sh1.hadoop的heapsize的设置,默认1000 # The maximum ...

  3. Hadoop优化 第一篇 : HDFS/MapReduce

    比较惭愧,博客很久(半年)没更新了.最近也自己搭了个博客,wordpress玩的还不是很熟,感兴趣的朋友可以多多交流哈!地址是:http://www.leocook.org/ 另外,我建了个QQ群:3 ...

  4. hadoop优化之拙见

    map-reduce的优化: 需要内存的地方:  map/reduce任务运行时内存.存放中间数据的内存缓存区.map输出数据排序内存, 需要操作磁盘的地方: map输出数据缓冲区达到阀值的溢出写文件 ...

  5. Hadoop(24)-Hadoop优化

    1. MapReduce 跑得慢的原因 优化方法 MapReduce优化方法主要从六个方面考虑:数据输入.Map阶段.Reduce阶段.IO传输.数据倾斜问题和常用的调优参数. 数据输入 Map阶段 ...

  6. Hadoop优化 操作系统优化

    1.优化文件系统,修改/etc/fstab 在defaults后面添加noatime,表示不记录文件的访问时间. 修改为: 如果不想重新启动操作系统使配置生效,那么应该执行: # mount -o r ...

  7. Hadoop优化之数据压缩

    bBHadoop数据压缩 概述 运行hadoop程序时,I/O操作.网络数据传输.shuffle和merge要花大量的时间,尤其是数据规模很大和工作负载密集的情况下,这个时候,使用数据压缩可以提高效率 ...

  8. [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化

    6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...

  9. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

随机推荐

  1. python计算素数和

    计算输入两个正整数x,y(x<=y,包括x,y)素数和.函数isPrime用以判断一个数是否素数,primeSum函数返回素数和 以下为源码 def isPrime(n) :    for i ...

  2. spring boot集成FastDFS

    官方文档:https://github.com/happyfish100/fastdfs-client-java 一.首先,maven工程添加依赖 <!--fastdfs--> <d ...

  3. Java虚拟机—垃圾收集器(整理版)

    1.概述 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何实现并没有规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾收集器都可能会有很 ...

  4. python 玩耍天地

    词云 wordcloud wordcloud轮子下载 下载上面链接里对应的 whl (我选的 xxx_win32.whl)到 本地 进行安装 一般地, 会结合 jieba 分词 还有 matplotl ...

  5. c语言int型和char型的自动类型转换

    ; //机器码为0xff unsigned ; //机器码0xfe if (a <= b){ printf("a <= b\n"); } else{ printf(&q ...

  6. PowerPoint 中插入 Latex 公式

    做 PPT 用 Latex Beamer 毕竟还是太麻烦,Beamer 毕竟还是更适合学术性的,各种定义各种公式的那种,遇到要画各种图,插入各种图片,进行错综复杂的排版就比较棘手了. 最终还是 Pow ...

  7. Mysql5.7数据导出提示--secure-file-priv选项问题的解决方法

    mysql可使用into outfile参数把表中的数据到处到csv,示例如下: select user_id from weibo_comment into outfile '/home/dazha ...

  8. 使用Perfect Player观看电视直播

    Perfect Player下载地址: 官网 http://niklabs.com/ 去广告版本:链接: https://pan.baidu.com/s/1gevIdBghB6lB46vVyfQUWg ...

  9. 51nod1236 序列求和 V3

    这题炒鸡简单,只要第一步想对了后面顺风顺水QWQ(然鹅我没想到) 前置芝士: 斐波那契数列通项公式 等比数列求和公式 二项式定理 这题要求的就是 \(\sum_{i=1}^n Fib(i)^k\) , ...

  10. TCP-IP详解笔记8

    TCP-IP详解笔记8 TCP超时与重传 下层网络层(IP)可能出现丢失, 重复或丢失包的情况, TCP协议提供了可靠的数据传输服务. TCP启动重传操作, 重传尚未确定的数据. 基于时间重传. 基于 ...