MapReduce初探

    云计算的关键技术主要包括:虚拟化、海量数据处理、大规模分布式存储、消息通信、快速部署、资源调度、多租户技术、许可证管理与计费。。。作为一个到目前为止还没有一个清晰的统一的概念的应用模式,云计算无疑是有着广阔的前景。

    本文对云计算中所用到的MapReduce做一个小小的初探,简要介绍一下其思路。

What?什么是MapReduce。

MapReduce是一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。

MapReduce实现了Map和Reduce两个功能

–Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集

–Reduce对结果集进行分类和归纳

–Map()和 Reduce() 两个函数可能会并行运行,即使不是在同一的系统的同一时刻

How?案例:单词记数问题(Word Count)

问题提出:给定一个巨大的文本(如1TB),如何计算单词出现的数目?

MapReduce初探_第1张图片

下面使用MapReduce求解该问题,思路如下:

首先定义Map和Reduce函数

Map(K, V)

{

       For each word w in V

             Collect(w, 1);

}

Reduce(K, V[])

{

      int count = 0;

      For each v in V

            count += v;

      Collect(K, count);

}

 

Step 1: 自动对文本进行分割

MapReduce初探_第2张图片


Step 2:在分割之后的每一对<key,value>进行用户定义的Map进行处理,再生成新的<key,value>对

MapReduce初探_第3张图片

Step 3:对输出的结果集归拢、排序(系统自动完成)

MapReduce初探_第4张图片

Step 4:通过Reduce操作生成最后结果

MapReduce初探_第5张图片

通过简单的图示,我们可以对MapReduce有一个初步的认识。当然,还是比较模糊。以后的文章,会进一步介绍。

你可能感兴趣的:(mapreduce,编程,云计算,each,分布式存储,虚拟化)