在大数据时代,除了需要解决大规模数据的高效存储问题,还需要解决的另一个问题,就是如何对大规模数据进行高效处理?我们知道Hadoop的有两个核心技术,一个是HDFS(解决了大规模数据的存储问题),另一个是MapReduce。而MapReduce这个核心技术就是解决如何对大规模数据进行高效处理的并行编程模型。
一、分布式并行编程
在过去的很长一段时间里,CPU的性能都会遵循”摩尔定律“,在性能上每隔18个月左右就是提高一倍。那个时候,不需要对程序做任何改变,仅仅通过使用更优秀的CPU,就可以进行性能提升。但是现在,在CPU性能提升的道路上,人类已经到达了制作工艺的瓶颈,因此,我们不能再把希望寄托在性能更高的CPU身上了。
现在这个时候,大规模数据存储在分布式文件系统上,人们也开始采用分布式并行编程来提高程序的性能。分布式程序运行在大规模计算机集群上,集群是大量的廉价服务器,可以并行执行大规模数据处理任务,这样就获得了海量的计算能力
分布式并行编程比传统的程序有明显的区别,它运行在大量计算机构成的集群上,可以充分利用集群的并行处理能力;同时,通过向集群中增加新的计算节点,就可以很容易的实现集群计算能力的扩展。
Hadoop MapReduce是谷歌提出的分布式并行编程模型MapReduce论文的开源实现,运行在分布式文件系统HDFS上的并行编程模型。MapReduce的优势在于处理大规模数据集(1TB以上)。
二、MapReduce模型简介
我们应该知道,Hadoop的MapReduce核心技术起源于谷歌在2004年发表的关于MapReduce系统的论