Hadoop之关键技术(二)--- MapReduce

        MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各分节点共同完成,然后通过整个各分节点的中间结果,得到最终的结果。简单的说,MapReduce就是“任务的分解与结果的汇总”。上述处理过程被MapReduce高度地抽象成为两个函数:map和reduce,map负责把任务分解成多个任务,reduce复制把分解后的多任务处理的结果汇总起来。需要注意的是,用MapReduce来处理的数据集必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,而且每个小数据集都可以完全并行处理。


        上图给出了使用MapReduce处理大数据集的过程,从图中可以看出,该计算模型的核心部分是map和reduce函数。这两个函数的具体功能由用户根据需要自己设计实现,只要能够按照用户自己定义的规则,将输入的<key,value>对转换成另一个或一批<key,value>对输出即可。

          在Map阶段,MapReduce框架将任务输入数据分割成固定大小的片段(splits),随后将每个split进一步分解成一批键值对<K1,V1>。Hadoop为每一个split创建一个Map任务用于执行用户自定义的map函数,并将对应split中的<K1,V1>对作为输入,得到计算的中间结果<K2,V2>。接着将中间结果按照K2进行排序,并将Key值相同的value放在一起形成一个新的列表,形成<K2,list(V2)>元组。最后再根据key值的范围将这些元素进行分组,对应不同的Reduce任务。

         在Reduce阶段,Reduce把从不同Mapper接收来的数据整合在一起并进行排序,然后调用用户自己定义的reduce函数,对输入<K2,list(V2)>对进行相应的处理,得到键值对<K3,V3>并输出打HDFS上。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值