Mapreduce思想
1. 就是做一个计算,如果计算过程中如果数据传输消耗的资源大于计算消耗的资源,考虑在计算过程中,将算法(程序),移动到数据存放的服务器中,再进行计算。
2. 在做一个巨型计算时,利用多台(例如 2000 )台服务器的 cpu 和内存同时计算。
算法描述
第一种方式描述
将计算要用的数据切分,放在各个服务器上,然后将计算程序分发到各个服务器,计算出各个部分的结果。最后将各个计算结果合并。
第二种方式描述
另外一种描述为, MapReduce 的名字源于这个模型中的两项核心操作: Map 和 Reduce 。也许熟悉
Functional Programming (函数式编程)的人见到这两个词会倍感亲切。简单的说来, Map
是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对 [1, 2, 3, 4] 进行乘 2 的映射就变成了 [2,
4, 6, 8] 。 Reduce 是对一组数据进行归约,这个归约的规则由一个函数指定,比如对 [1, 2, 3, 4]
进行求和的归约得到结果是 10 ,而对它进行求积的归约结果是 24
总的来说算法必须可以切分,包含小列步骤。
切分、分别计算、合并。
最典型的是大规模日志计算。