MapReduce简介
Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算
Map(映射)和Reduce(化简)
映射
简单说来,一个映射函数就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。
化简
化简操作指的是对一个列表的元素进行适当的合并虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。
可靠性
-
把对数据集的大规模操作分发给网络上的每个节点
-
每个节点会周期性的把完成的工作和状态的更新报告回来
-
如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点
-
由于化简操作在并行能力较差,主节点会尽量把化简操作调度在一个节点上,或者离需要操作的数据尽可能近的节点上