MapReduce初步认识

Hadoop是一个技术体系的产物,从诞生到演变至今依然是大数据领域的核心技术工具集之一。

Hadoop本身也是从公司产出物,逐步到Apache这样开源社区中运作的,围绕早期在计算和存储领域的技术栈,通过开源社区不断丰富这个技术栈的生态体系。

Hadoop整个技术栈体系也是逐步演进的,早期由两个重要的组成部分HDFS和MapReduce构成,到3.0版本后演变为HDFS、YARN和MapReduce三个项目。这里只是对MapReduce这个计算框架深入学习理解。

MapReduce计算框架是分布式的,总体设计思想是将多个任务实现在集群多节点上调度分发,实现数据并行计算。另外在执行器下的计算模型上,支持“分而治之”思想的数据计算模型,解决海量数据域问题。(这里为了有个清晰的理解思路,就从Hadoop1.0版本中MapReduce结构理解起,后续MapReduce的分析都基于这个大版本体系前提下进行。)

Alt text

组成部分:
1.一套计算框架实现MapReduce,由一套对外开放的client(编程API接口和runtime运行环境)、JobTracker任务调度模块、TaskTracker任务执行器模块组成。而每个TaskTracker执行器下的Map Task和Reduce Task是计算框架模型决定的。

2.一套分布式文件存储系统HDFS,负责存放开发者打包的client、bus code业务代码、config配置的jar包,供JobTracker加载后调度;同时负责存放MapReduce计算框架的输入、输出数据,输入为HDFS的block块,输出按照partition分区组织存储。其中JobTracker中的任务调度,是通过插件方式支持外部开发者提供的,即Task Scheduler插件模块。

这里因为重点研究分析MapReduce的计算框架,所以关于Hadoop的整个技术栈集合就不去过多分析了。

MapReduce是一个数据分布式计算框架,主要采用了一种Mapper、Reducer分而治之的计算思路来解决数据问题域的问题,尤其是面向海量数据的问题求解。同时MapReduce带给我们开发者的也绝非一种框架具体的实现,从我们开发者角度更多也应该是一种解决问题的设计思想。我们开发者甚至也可以从这种设计思想的理解中,衍生抽象出自己的问题域计算框架。

Search

    Table of Contents