MapReduce简介

MapReduce是一种简化并行计算的编程模型,降低开发并行应用的入门门槛。

1、MapReduce要解决什么问题:

MapReduce是一种编程模式:
    一种云计算的核心计算模式
    一种分布式运算技术
    简化的分布式编程模式
   
MapReduce主要用于处理并行计算大规模海量数据:
    分布gre
    分布排序
    Web连接图反转
    每台机器的词矢量
    Web访问日志分析
    反向索引建构
    文档聚类
    机器学习
    基于统计的机器翻译
   
MapReduce实现以后,被用来重新生成Google的整个索引,并取代老的adhoc程序去更新索引。

MapReduce会生成大量临时文件,为了提高效率,它利用分布式文件管理系统来管理和访问这些文件。

2、MapReduce理论基础

MapReduce源于这个模型中的两项核心操作:Map和Reduce。

概括来说,
Map负责把任务分解成多个任务,
Reduce负责把分解后的多任务处理的结果汇总起来。
至于并行编程中的其他复杂问题,如分布式存储、工作调度、负载均衡、容错处理、网络通信等,
由MapReduce框架负责处理,而程序员不用关心这些。

MapReduce模式的主要思想是将要自动分割执行的问题拆成Map(映射)和Reduce(化简)的方式。

数据被分割后通过Map函数的程序将数据映射成不同的区块,分配给计算机集群处理达到分布式运算的效果,
再通过Reduce函数的程序将结果汇总,从而输出开发者需要的结果。

MapReduce考虑了局部性原理,将问题分而治之。
MapReduce集群由普通PC构成,无共享式架构。
在处理前将数据集分布至各个节点。
处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)
后再分发(reduce节点),从而避免了大量数据的传输,提高了处理效率。

无共享式架构的另一个好处是配合复制(replication)类略,集群可以具有良好的容错性,
一部分节点的宕机对集群的正常工作不会造成影响。

列表处理

映射Mapping 数据列表(Lists)

Reducing 数据列表(Lists)

分布和可靠性

3、MapReduce的编程模式

Map和Reduce的两个概念的主要思想都是从函数式和矢量编程语言借鉴过来的。

MapReduce实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对;
指定一个Reduce(化简)函数,用来保证所有映射键值对中的每一个共享相同的键组。

认识键和值

Mapper和Reducer是如何工作的

    原文作者:MapReduce
    原文地址: https://www.cnblogs.com/tuhooo/p/5486287.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞