mapreduce的shuffle过程

shuffle:map阶段的数据传递到reduce阶段,这个流程叫做shuffle

 

  • 程序执行,首先启动mrAppMaster(mr)
  • mr根据job信息,启动相应数量的mapTask进程

分片大小默认等于block(块)大小,块大小默认128M。

分片大小可以通过FileInputFormat的getSplit方法修改。

一个分片启动一个mapTask。

注意多个文件不能分到同一个分片。

  • 每个mapTask,读取文件内容(默认TextInputFormat),每读取一次(一个kv对)调用一次map方法
  • map方法对数据进行逻辑处理
  • 输出结果(kv对)放到缓存区

缓存区是一个环形缓冲区,默认大小100M。预留20%空间用来进行分区排序

  • 缓存区分区排序(快排)后,溢出到磁盘文件。

至少进行一次溢出

  • 磁盘文件进行局部聚合(combiner),利用归并排序
  • mr根据job信息启动相应数量的reduceTask
  • reduceTask去每个mapTask上拉取属于自己的分区内容
  • 根据分组方法(默认key相同为一组),将拉去的内容合并(归并排序)
  • 每组调用一次reduce方法
  • 输出(默认TextOutputFormat)结果到指定文件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值