• [微笑]这篇写得不错,没有逻辑上的问题!不过咱估计不会讨小萌们喜欢。 2019-07-16
  • 陈华德的专栏作者中国国家地理网 2019-07-16
  • 西藏迎来首家民营文化企业援藏团队 2019-07-14
  • “精日亲美的真正原因”是中国的伪公知精英身上长了“洋奴依附之心”,“崇洋媚外之骨”,“汉奸文化之瘤”,这些人利用“和谐、包容”疯狂推行汉奸文化洗脑国人! 2019-07-10
  • 合肥市公立医疗机构1271种医疗服务价格公示 部分服务涨价 2019-07-10
  • 文昌至临高高速公路有望年内开工 建成后车程缩至1小时内 2019-07-02
  • 加入我们中国国家地理网 2019-06-27
  • 强势发力体育营销 世界杯中国企业改变“旁观”窘状 2019-06-25
  • “道德瘾君子”侮辱了杨女士的善良 2019-06-25
  • 郑永年:争名逐利抢流量,中国的知识分子怎么了? 2019-06-21
  • 十九大代表拉措:团结一心跟党走   2019-06-18
  • 美钢铝关税政策引发各界忧虑 2019-06-18
  • 党的十九大最重大的理论成就 2019-06-15
  • 经济日报多媒体数字报刊 2019-06-15
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-06-14
  • 欢迎来到魔据教育大数据学院,专注大数据工程师培养!
    当前位置:两肖两码中特资料网 > 学习资料 > 讲师博文 > MapReduce的核心Shuffle

    下期必出两码中特香港: MapReduce的核心Shuffle

    时间:2017-08-17 17:51:18作者:[!--zuozhe--]

    两肖两码中特资料网 www.mqptd.tw  

    一、什么是Shuffle
    Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。Shuffle的正常意思是洗牌或弄乱。

    8-1.png

     

    在Hadoop这样的集群环境中,大部分map task与reduce task的执行是在不同的节点上。Reduce执行时需要跨节点去拉取其它节点上的map task结果。如果集群正在运行的job有很多,那么task的正常执行对集群内部的网络资源消耗会很严重。这种网络消耗是正常的,我们不能限制,能做的就是最大化地减少不必要的消耗?;褂性诮诘隳?,相比于内存,磁盘IO对job完成时间的影响也是可观的。从最基本的要求来说,我们对Shuffle过程的期望可以有: 
    Ø 完整地从map task端拉取数据到reduce 端。
    Ø 在跨节点拉取数据时,尽可能地减少对带宽的不必要消耗。
    Ø 减少磁盘IO对task执行的影响。
    、Shuffle在map端的过程
    1.在map task执行时,它的输入数据来源于HDFS的block,当然在MapReduce概念中,map task只读取split。Split与block的对应关系可能是多对一,默认是一对一。
    2.在经过mapper的运行后,mapper的输出是一个key/value对: key是单词, value是数值1。job有多个reduce task,到底当前的结果应该交由哪个reduce去做呢?
    MapReduce提供Partitioner接口,它的作用就是根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce task处理。默认对key hash后再以reduce task数量取模。默认的取模方式只是为了平均reduce的处理能力,如果用户自己对Partitioner有需求,可以订制并设置到job上。 
    3.这个环形缓冲区默认是100MB。当map task的输出结果很多时,就可能会撑爆内存,所以需要将缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为Spill,中文可译为溢写,整个缓冲区有个溢写的比例spill.percent。这个比例默认是0.8,也就是当缓冲区的数据已经达到阈值(buffer size * spill percent = 100MB * 0.8 = 80MB),溢写线程启动,锁定这80MB的内存,执行溢写过程。Map task的输出结果还可以往剩下的20MB内存中写,互不影响。 
    当溢写线程启动后,需要对这80MB空间内的key做排序(Sort)。排序是MapReduce模型默认的行为,这里的排序也是对序列化的字节做的排序。
    溢写过程一个很重要的细节在于,如果有很多个key/value对需要发送到某个reduce端去,那么需要将这些key/value值拼接到一块,减少与partition相关的索引记录。 
      在针对每个reduce端合并数据时,如果在同一个map task的结果中有很多个出现多次的key,我们就把它们的值合并到一块,这个过程叫reduce也叫combine。reduce只指reduce端执行从多个map task取数据做计算的过程。非正式地合并数据只能算做combine了
    如果client设置过Combiner,Combiner会优化MapReduce的中间结果。 Combiner的输出是Reducer的输入,Combiner绝不能改变最终的计算结果。所以Combiner只应该用于Reduce的输入与输出类型完全一致,且不影响最终结果的场景。比如累加,最大值等。
    4.每次溢写会在磁盘上生成一个溢写文件,如果map的输出结果很大,有多次这样的溢写发生,磁盘上相应的就会有多个溢写文件存在。当map task真正完成时,内存缓冲区中的数据也全部溢写到磁盘中形成一个溢写文件。最终磁盘中会至少有一个这样的溢写文件存在(如果map的输出结果很少,当map执行完成时,只会产生一个溢写文件),因为最终的文件只有一个,所以需要将这些溢写文件归并到一起,这个过程就叫做Merge。比如{“aaa”, [5, 8, 2, …]},数组中的值就是从不同溢写文件中读取出来的,然后再把这些值加起来。在这个过程中如果client设置过Combiner,也会使用Combiner来合并相同的key。 
    最终生成的文件存放在TaskTracker够得着的某个本地目录内。每个reduce task不断地通过RPC从JobTracker那里获取map task是否完成的信息,如果reduce task得到通知,获知某台TaskTracker上的map task执行完成,Shuffle的后半段过程开始启动。 
    简单地说,reduce task在执行之前的工作就是不断地拉取当前job里每个map task的最终结果,然后对从不同地方拉取过来的数据不断地做merge,也最终形成一个文件作为reduce task的输入文件。见下图:

    8-2.png

    三、Shuffle在reduce端的过程
     1.Copy过程,简单地拉取数据。Reduce进程启动一些数据copy线程(Fetcher),通过HTTP方式请求map task所在的TaskTracker获取map task的输出文件。因为map task早已结束,这些文件就归TaskTracker管理在本地磁盘中。 
    2.Merge阶段。Copy过来的数据会先放入内存缓冲区中,这里的缓冲区大小要比map端的更为灵活,它基于JVM的heap size设置,因为Shuffle阶段Reducer不运行,所以应该把绝大部分的内存都给Shuffle用。这里需要强调的是,merge有三种形式:
    1)内存到内存 
    2)内存到磁盘 
    3)磁盘到磁盘
    默认情况下第一种形式不启用。当内存中的数据量到达一定阈值,就启动内存到磁盘的merge。与map 端类似,这也是溢写的过程,这个过程中如果你设置有Combiner,也是会启用的,然后在磁盘中生成了众多的溢写文件。第二种merge方式一直在运行,直到没有map端的数据时才结束,然后启动第三种磁盘到磁盘的merge方式生成最终的那个文件。 
    3.Reducer的输入文件。不断地merge后,会生成一个最终文件。这个文件可能存在于磁盘上,也可能存在于内存中。默认情况下,这个文件是存放于磁盘中的。当Reducer的输入文件已定,整个Shuffle才最终结束。然后就是Reducer执行,把结果放到HDFS上。

    更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
    学习大数据敬请关注魔据教育微信二维码。
    魔据教育微信二维码

    【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

    全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

    在线咨询:张老师QQ 320169340

    企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

    Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

    免费在线咨询两肖两码中特资料网

    免费索取技术资料立即索取

    大数据技术交流QQ:226594285

    电话咨询010-82340234

  • [微笑]这篇写得不错,没有逻辑上的问题!不过咱估计不会讨小萌们喜欢。 2019-07-16
  • 陈华德的专栏作者中国国家地理网 2019-07-16
  • 西藏迎来首家民营文化企业援藏团队 2019-07-14
  • “精日亲美的真正原因”是中国的伪公知精英身上长了“洋奴依附之心”,“崇洋媚外之骨”,“汉奸文化之瘤”,这些人利用“和谐、包容”疯狂推行汉奸文化洗脑国人! 2019-07-10
  • 合肥市公立医疗机构1271种医疗服务价格公示 部分服务涨价 2019-07-10
  • 文昌至临高高速公路有望年内开工 建成后车程缩至1小时内 2019-07-02
  • 加入我们中国国家地理网 2019-06-27
  • 强势发力体育营销 世界杯中国企业改变“旁观”窘状 2019-06-25
  • “道德瘾君子”侮辱了杨女士的善良 2019-06-25
  • 郑永年:争名逐利抢流量,中国的知识分子怎么了? 2019-06-21
  • 十九大代表拉措:团结一心跟党走   2019-06-18
  • 美钢铝关税政策引发各界忧虑 2019-06-18
  • 党的十九大最重大的理论成就 2019-06-15
  • 经济日报多媒体数字报刊 2019-06-15
  • 西安外事学院在省茶艺大赛中创多项佳绩西安外事学院-陕西教育新闻 2019-06-14
  • 汉诺威96引援 琼崖海南麻将官方下载 四川麻将巡回大赛 闲云阁青海麻将 斯特拉斯堡冬马和纱 易利分分彩app 昆虫宝宝客服 中国福利彩票双色球中奖规则 码报报纸 幸运双星大奖爆