Hadoop是Apache下的一个项目,由HDFS、MapReduce、Hive、Zookeeper、HBase等组成。其中MapReduce和HDFS是两个最基础最重要的成员。
MapReduce
MapReduce是现今非常流行的一个分布式计算框架,它被设计用于并行计算海量数据。第一个提出该技术框架的是Google公司,而Google的灵感则是来自函数式编程,如LISP、ML、Scheme等。
以下是MapReduce三个主要步骤:
Mapping
对集合中的每一个目标都执行同一个的操作;
当你向该框架发布一个计算任务时,它会首先将计算任务分成若干个Map任务,然后分布到不同的节点去执行,每一个Map任务处理输入数据的一部分内容,当Map任务完成后,会产生一个中间文件,而这些中间文件则作为Reduce的输入。
Shuffle
它是MapReduce的心脏。指的是从Map产生输出开始,包括系统执行排序以及传送Map输出到Reducer作为输入的过程。在这里不去探究其具体的工作流程。
Reducing
遍历集合中的所有元素来返回一个综合的结果;
Reduce的任务则是将前面处理过的结果汇总到一起并输出。
MapReduce的基本构思
对付大数据处理——分而治之
什么样的计算任务可以进行并行化计算?
并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对划分的子任务或数据块行并行计算。但并不是所有任务都能够进行并