MapReduce 扫盲

    随着数据量的增大,想要在可接受的时间内完成一定量的计算,不断地更新硬件系统已经成为很多企业的负担。但同时通过成百上千的普通pc 机实现并行计算,又有很多难点,如如何处理大量机子的并行计算问题,如何发布数据,如何处理错误等等问题,仅仅搭建这个框架就另很多企业望而生畏。

就在这样的大环境下MapReduce 的诞生可谓是历史的必然。它是这样一个抽象模型:利用一个输入key/value pair集合来产生一个输出的key/value pair集合。

MapReduce库的用户用两个函数表达这个计算:MapReduce。用户自定义的Map函数接受一个输入的key/value pair值,然后产生一个中间key/value pair值的集合。

MapReduce库把所有具有相同中间keyI的中间value值集合在一起后传递给reduce函数。

用户自定义的Reduce函数接受一个中间key的值I和相关的一个value值的集合。Reduce函数合并这些

value值,形成一个较小的value值的集合。一般的,每次Reduce函数调用只产生01个输出value值。

通常我们通过一个迭代器把中间value值提供给Reduce函数,这样我们就可以处理无法全部放入内存中的大量的value值的集合。

 

使用它,我们只要表述我们想要执行的简单运算即可,而不必关心并行计算、容错、数据分布、负载均衡等复杂的细节,这些问题都被封装在了一个库里面,从而大大的简化了我们的工作。

猜你喜欢

转载自jaler.iteye.com/blog/1952528