hadoop mapreduce原理

简介

本文先介绍Google 开源项目mapreduce1.0版。mapreduce的设计是为实现一个抽象的计算框架,使用者不用关心底层如何实现,只需要关注业务逻辑从而计算海量、复杂的原始数据。

编程模型

设计理念是实现“计算向数据靠拢”,“数据向计算靠拢”会造成大量的I/O消耗,计算过程分为map和reduce阶段。
存储在HDFS中的数据被切分成很多块,这些块可以分发到多个map任务并行处理,生成一个内部有序外部无序的key/value数据集作为reduce任务的输入,由reduce执行最后的合并计算,最终形成一个按照key规则排序的计算结果。

Map
  • 输入数据被切分成逻辑数据集合,该切分并不是物理意义的切分,只是记录了数据的开始和结束的长度,切分规则由blocksize,maxsize,minsize这三个属性的中间值决定,一般一个block就是一个map任务。
  • map任务被分发到多台机器执行,每个map任务最后生成一个“外部无序内部有序”的key/value集合,并缓存在内存中
  • 为了减少磁盘I/O带来的消耗,在2.0版本中,map计算结果不再落地写入本地,直接从内存通过网络传给执行reduce任务的计算机

从上得知,map最主要的任务就是完成数据的分发并行计算

Reduce
  • 当所有map任务完成后,如果map没有进行combiner(合并),将会输出<key,value(v1,v2,v3)>的结果作为reduce的输入
  • 同一个key/value集合调用一次red
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值