云计算的关键技术主要包括:虚拟化、海量数据处理、大规模分布式存储、消息通讯、快速部署、资源调度、多租户技术、许可证管理与计费。。。做为一个到目前为止尚未一个清晰的统一的概念的应用模式,云计算无疑是有着广阔的前景。编程
本文对云计算中所用到的MapReduce作一个小小的初探,简要介绍一下其思路。架构
What?什么是MapReduce。分布式
MapReduce是一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(一般大于1TB)的并行运算。ide
MapReduce实现了Map和Reduce两个功能函数
–Map把一个函数应用于集合中的全部成员,而后返回一个基于这个处理的结果集云计算
–Reduce对结果集进行分类和概括3d
–Map()和 Reduce() 两个函数可能会并行运行,即便不是在同一的系统的同一时刻blog
How?案例:单词记数问题(Word Count)排序
问题提出:给定一个巨大的文本(如1TB),如何计算单词出现的数目?ci
下面使用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有一个初步的认识。固然,仍是比较模糊。之后的文章,会进一步介绍。