MapReduce (MRV1)设计理念与基本架构

MapReduce 是一个分布式计算框架主要由两部分组成编程模型和运行时环境.

其中编程模型为用户提供了非常易用的编程接口用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序而其他比较复杂的工作如节点间的通信节点失效数据切分等全部由MapReduce 运行时环境完成用户无须关心这些细节

编程模型

    它的基本编程模型是将问题抽象成Map Reduce 两个阶段其中Map 阶段将输入数据解析成key/value迭代调用map() 函数处理后再以key/value 的形式输出到本地目录Reduce 阶段则将key 相同的value 进行规约处理并将最终结果写到HDFS

map() 函数以key/value 对作为输入产生另外一系列key/value 对作为中间输出写入本地

磁盘MapReduce 框架会自动将这些中间数据按照key 值进行聚集key 值相同用户可

设定聚集策略默认情况下是对key 值进行哈希取模的数据被统一交给reduce() 函数处理

reduce() 函数以key 及对应的value 列表作为输入经合并key 相同的value 值后

生另外一系列key/value 对作为最终输出写入HDFS

运行时环境

    它的运行时环境由两类服务组成JobTracker TaskTracker其中JobTracker 负责资源管理和所有作业的控制TaskTracker 负责接收来自JobTracker 的命令并执行它

 

五个编程组件:

InputFormat

Mapper

Partitioner

Reducer

OutputFormat

Block split的关系:

 

Map Task 执行过程:

Map Task 先将对应的split 迭代解析成一个个key/value 依次调用用户自定义的map() 函数进行处理最终将临时结果存放到本地磁盘上其中临时数据被分成若干个partition每个partition 将被一个Reduce Task 处理


Reduce Task
的执行过程:

该过程分为三个阶段①从远程节点上读取MapTask 中间结果称为"Shuffle 阶段");②按照key key/value 对进行排序称为"Sort 阶段");③依次读取<key, value list>调用用户自定义的reduce() 函数处理并将最终结果存到HDFS 称为"Reduce 阶段")。

Hadoop MR作业的生命周期:

这个过程分为以下5 个步骤

步骤1 作业提交与初始化

步骤2 任务调度与监控

步骤3 任务运行环境准备

步骤4 任务执行

步骤5 作业完成

 

分布式编程的方法:

适应的场景:

任务可被分解成相互独立的子问题

MapReduce 编程模型给出了其分布式编程方法共分5 个步骤

1迭代iteration)。遍历输入数据并将之解析成key/value

2将输入key/value 映射map成另外一些key/value

3依据key 对中间数据进行分组grouping)。

4以组为单位对数据进行归约reduce)。

5迭代将最终产生的key/value 对保存到输出文件中

MapReduce 将计算过程分解成以上5 个步骤带来的最大好处是组件化与并行化

 

 

MapReduce编程体系结构:

流式访问、有向图式访问、链式MapperReduce访问、

posted @ 2017-01-24 17:18  joqk  阅读(840)  评论(0编辑  收藏  举报