MapReduce初探
云计算的关键技术主要包括:虚拟化、海量数据处理、大规模分布式存储、消息通信、快速部署、资源调度、多租户技术、许可证管理与计费。。。作为一个到目前为止还没有一个清晰的统一的概念的应用模式,云计算无疑是有着广阔的前景。
本文对云计算中所用到的MapReduce做一个小小的初探,简要介绍一下其思路。
What?什么是MapReduce。
MapReduce是一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。
MapReduce实现了Map和Reduce两个功能
–Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集
–Reduce对结果集进行分类和归纳
–Map()和 Reduce() 两个函数可能会并行运行,即使不是在同一的系统的同一时刻
How?案例:单词记数问题(Word Count)
问题提出:给定一个巨大的文本(如1TB),如何计算单词出现的数目?
下面使用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: 自动对文本进行分割
Step 2:在分割之后的每一对<key,value>进行用户定义的Map进行处理,再生成新的<key,value>对
Step 3:对输出的结果集归拢、排序(系统自动完成)
Step 4:通过Reduce操作生成最后结果
通过简单的图示,我们可以对MapReduce有一个初步的认识。当然,还是比较模糊。以后的文章,会进一步介绍。
转载于:https://blog.51cto.com/havenzhao/761970