MapReduce学习(一)

MapReduce是分布式计算系统,可以快速的处理大文件。


程序员基于MapReduce的java开发包编写客户端程序,配置并请求运行在服务器集群的MapReduce系统执行一个作业(job)。客户端程序除了指定要处理的大文件、输出结果的文件,还要指定两个函数,分别是map函数和reduce函数,系统就是根据这两个函数来对文件进行处理。


系统先对大文件分片,然后并发的处理每个分片数据,处理过程就是调用map函数。map函数一次接受一个input key/value pair,输出一个或多个‘中间’(intermediate)键值对,当系统处理完所有分片数据就得到了很多的中间键值对。


系统将所有中间键值对集合起来,具有相同键的键值对作为一个分片,如果某个键的键值对的个数非常大,系统还会对其再分片。然后系统并发的处理这些分片,处理过程就是针对每个分片调用reduce函数。reduce函数一次接受一个中间键以及对应的一组中间值,该函数会merge这些值,减少值的数量,然后输出一个或多个经过reduce后(数量被reduce)的中间键值对,输出的中间键值对会在下次系统调用reduce函数时做为输入,也就是说,这是一个迭代的过程,输出作为输入,直到系统找不到具有相同键的键值对,此时,系统无法也无需根据键来集中具有相同键的键值对了,系统最后将所剩的键值对写入到指定的输出文件中,完成了对客户端请求的作业(job)的计算。


可以将reduce函数最后输出的每个键看做客户端请求系统计算的一个问题,而键对应的值就是该问题的最终答案。


以上理解可以对照word count例子的代码来看。


本文参考了论文《MapReduce- Simplified Data Processing on Large Clusters》。


如有理解不对,欢迎指正,O(∩_∩)O谢谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值