Hadoop中的MapReduce的shuffle过程及调优

概述

Shuffle,即混洗、洗牌,顾名思义就是对数据打乱重新分配。Shuffle发生在Map输出至Reduce的输入过程之间。主要分为两部分

  1. Map任务输出的数据进行分组、合并、排序,并写入本地磁盘
  2. Reduce任务拉取数据进行合并、排序

 

Shuffle过程

 

Map端

  • Map端输出时,会先将数据写入内存的环形缓冲区,默认大小100M,可通过参数设置
  • 当缓冲区的内容大小达到阈值(默认0.8,可通过参数设置),便有一个后台线程将写入缓冲区的数据溢写到磁盘。溢写的过程中Map任务仍然可以写数据到缓冲区,一旦缓冲区写满,Map任务将会被阻塞,知道后台线程写磁盘结束
  • 数据溢写到磁盘时会计算输出key的分区,同一个分区的key分在一组并按照key排序,最后写入磁盘文件。如果设置了combiner,会在写磁盘前调用combiner函数进行聚合,目的是减少网络IO,且不会影响Reduce计算结果
  • 每一次溢写都会产生一个文件,Map结束后会产生多个文件,但最终会被合并成一个分区且有序的文件。合并文件时可通过参数设置合并的文件个数
  • 输出到磁盘的过程可以设
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值