大数据中mapreduce的核心,shuffle的理解,以及在shuffle中的优化问题

关于shuffle的过程图。

  

一:概述shuffle

  Shuffle是mapreduce的核心,链接map与reduce的中间过程。

  Mapp负责过滤分发,而reduce则是归并整理,从mapp输出到reduce的输入的这个过程称为shuffle过程。

二:map端的shuffle 

1.map结果的输出

  map的处理结果首先存放在一个环形的缓冲区。

  这个缓冲区的内存是100M,是map存放结果的地方。如果数据量较大,超过了一定的量(默认80M),将会发生溢写过程。

  在mapred-site.xml中设置内存的大小

    <property>

      <name>mapreduce.task.io.sort.mb</name>

      <value>100</value>

    </property>

  在mapred-site.xml中设置内存溢写的阈值  

    <property>

      <name>mapreduce.task.io.sort.spill.percent</name>

      <value>0.8</value>

    </property>

   

2.溢写过程  

  溢写是系统在后台单独开一个线程去操办。

  溢写过程包括:分区partion,排序sort,溢写spill to disk,合并merge。

  

3.分区

  分区分的是80%的内存。

  因为reduce可能有不同的任务,所以会对80M的内存进行分区,将map的输出结果放入的对应的reduce分区中。

  

4.排序

  默认是按照key排序。

  当分区完成之后,对每一个分区的数据进行排序。

5.溢写

  排序之后,将内存的数据写入硬盘。留出内存方便map的新的输出结果。

6.合并

  如果是第一次写入硬盘则不需要考虑合并问题,但是在大数据的情况下,前面已经存在大量的spill文件的时候,这时候需要将它们进行合并。

  将各个分区合并之后,对每一个分区的数据再进行一次排序

  使用归并的方式进行合并,归并算法。

  实现compara,进行比较。

  形成一个文件。

三:reduce端的shuffle

1.步骤

  对于reduce端的shuffle,大致分为复制,合并。

2.复制

  当reduce开启任务后,不断的在各个节点复制需要的数据。

3.合并(内含排序)

  复制数据的时候,把可以存放进内存的就把数据存放在内存中,当达到一定的时候,启动merge,将数据写进硬盘。

  如果map数据大于内存需要存放的限制,直接写入硬盘,当达到一定的数量后将其合并为一个文件。

  这时候,reduce开启任务需要的数据在内存中和在硬盘中,最终形成一个全局文件。

4.分组

  《hadoop,1》

  《hadoop,1》

  《yarn,1》

  《hadoop,1》

  《hdfs,1》

  《yarn,1》

  将相同的key放在一起,使用comparable完成比较。

  结果为:

    《hadoop,list(1,1,1)》

    《yarn,list(1,1)》

    《hdfs,list(1)》

四:关于Comparator的理解

  不管是排序还是分组,都需要自定义排序器comparable

  Comparator类继承WritableComparator

  

  而WritableComparator完成接口RawComparator

  

  在RawComparator中:

  

  

五:shuffle处的优化

1.combine的优化

  

2.下面列举需要修改的程序

  

  

3.输出结果

  

  

4.关于压缩方面的优化

  

  注意点:

  

  会出现的问题:

  

六:属于分区的一个思路

  例如,大小写的分区

  一共分为两个区,0代表大写,1代表小写

  

转载于:https://www.cnblogs.com/RHadoop-Hive/p/7414066.html

大数据中mapreduce的核心,shuffle的理解,以及在shuffle中的优化问题相关推荐

  1. 大数据领域75个核心术语讲解!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 选自:DataConomy,来源:机器之心 近日,Ramesh Dont ...

  2. 图解大数据 | 应用Map-Reduce进行大数据统计@实操案例

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/84 本文地址:http://www.showmeai.tech/article-det ...

  3. 大数据相关技术的核心理念与历史发展

    大数据经典论文阅读梳理[第一期] 大家好,我是IT一氪的作者凌天,我是一名入门快两年的大数据开发工程师. 我之前是一名Java开发,大学毕业后转岗到大数据开发,在这快两年的时间里,我学习并使用了不少大 ...

  4. 大数据领域75个核心术语讲解(下)

    来源:Datawhale Ramesh Dontha 曾在 DataConomy 上连发两篇文章,扼要而全面地介绍了关于大数据的 75 个核心术语,这不仅是大数据初学者很好的入门资料,对于高阶从业人员 ...

  5. 大数据征信,核心是对大数据的搜集与挖掘

    今年初央行公布八家做好个人征信业务准备工作的机构以来,大数据征信成为行业热议的话题.这方面做的比较好的几家公司中,腾讯旗下的腾讯征信和阿里巴巴旗下的芝麻信用,因为各自掌握中国最大规模的互联网数据而备受 ...

  6. 大数据的七个核心应用价值

    随着移动互联网的飞速发展,信息的传输日益方便快捷,端到端的需求也日益突出,纵观整个移动互联网领域,数据已被认为是继云计算.物联网之后的又一大颠覆性的技术性革命,毋庸置疑,大数据市场是待挖掘的金矿,其价 ...

  7. 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)

    大数据技术之_23_Python核心基础学习_01 第一章 计算机基础知识 1.1 课程介绍 1.2 计算机是什么 1.3 计算机的组成 1.4 计算机的使用方式 1.5 windows 的命令行 1 ...

  8. 大数据技术之_23_Python核心基础学习_04_ 异常 + 文件(3.5小时)

    大数据技术之_23_Python核心基础学习_04 第七章 异常 7.1 异常的简介和异常的处理 7.2 异常的传播 7.3 异常对象 7.4 自定义异常对象 第八章 文件 8.1 文件--打开 8. ...

  9. 大数据-hadoop MapReduce

    大数据-hadoop MapReduce 大数据-hadoop MapReduce MapReduce 思考:为什么叫MapReduce? 对应关系 实操案例 MR计算框架:计算向数据移动如何实现? ...

  10. Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧

    Spark商业案例与性能调优实战100课>第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技 源代码 package com.dt.spark.coresi ...

最新文章

  1. 架构之路--实战项目记录(二) 忘记数据库 开始抽象
  2. 使用java检测网络连接状况
  3. sudo 安装 常见错误
  4. 超链接禁用_在Microsoft Word 2003和2007中禁用自动超链接
  5. 为view设置虚线边框
  6. activiti并行网关
  7. java arraylist 添加对象_如何在Java中将对象添加到ArrayList
  8. 机器学习中的特征工程总结
  9. 在VS中查看Halcon变量
  10. IT近年最新技术一览
  11. 微信公众号、企业服务号如何配置运营管理人员
  12. 面向对象:不要热情,不要高冷,只要37度的温暖
  13. C语言(PTA习题)7-3 数字三角形
  14. L1-005 考试座位号 (15 分)变量要设置对
  15. 2012二级c语言上机,2012全国计算机等级考试-二级C语言-上机考试-填空题-分类总结...
  16. 【C++】1023 组个最小数
  17. git: patch 是什么/ 如何用
  18. 属于拼多多的巴别塔正在构筑
  19. vue 视频播放插件vue-video-player的使用
  20. 如何理解计算机网络的体系结构,如何理解计算机组成和计算机体系结构?

热门文章

  1. Photoshop隐藏的4个彩蛋
  2. 匆忙赶路的时候别忘了适时停下来回头看看
  3. “梅丽莎”病毒背后的神秘黑客
  4. ansible的自动化管理
  5. 用快消品逻辑做进口冷冻食品,亲巧获180万元种子轮融资
  6. 最痛苦的一周——第三周作业Collinear
  7. linux日常运维命令
  8. 用.htaccess 禁止IP访问
  9. [2005.04.28 13:36:04] 孤岛热浪的联想
  10. 让代码在SharePoint页面执行如何在aspx页面中写代码