MapReduce 简介

1. MapReduce 介绍
MapReduce 思想在生活中处处可见。或多或少都曾接触过这种思想。 MapReduce 的思
想核心是 分而治之 ,适用于大量复杂的任务处理场景(大规模数据处理场景)。
Map 负责 ,即把复杂的任务分解为若干个 简单的任务 来并行处理。可以进行拆
分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。
Reduce 负责 ,即对 map 阶段的结果进行全局汇总。
MapReduce 运行在 yarn 集群
1. ResourceManager
2. NodeManager
这两个阶段合起来正是 MapReduce 思想的体现。
还有一个比较形象的语言解释 MapReduce:
我们要数图书馆中的所有书。你数 1 号书架,我数 2 号书架。这就是 “Map” 。我们人越多,
数书就更快。
现在我们到一起,把所有人的统计数加在一起。这就是 “Reduce”
1.1. MapReduce 设计构思和框架结构 MapReduce 是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码
和自带默认组件整合成一个完整的分布式运算程序,并发运行在 Hadoop 集群上。
既然是做计算的框架,那么表现形式就是有个输入( input ), MapReduce 操作这个输
入( input ),通过本身定义好的计算模型,得到一个输出( output )。
Hadoop MapReduce 构思 :
分而治之
对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治
之的策略。并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对
划分的子任务或数据块同时进行计算。不可分拆的计算任务或相互间有依赖关系
的数据无法进行并行计算!
统一构架,隐藏系统层细节
如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要
考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,
MapReduce 设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统
层面的处理细节。
MapReduce 最大的亮点在于通过抽象模型和计算框架把需要做什么 (what
need to do) 与具体怎么做 (how to do) 分开了,为程序员提供一个抽象和高
层的编程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需编
写少量的处理应用本身计算问题的程序代码。如何具体完成这个并行计算任
务所相关的诸多系统层细节被隐藏起来 , 交给计算框架去处理:从分布代码的
执行,到大到数千小到单个节点集群的自动调度使用。
构建抽象模型: Map Reduce
MapReduce 借鉴了函数式语言中的思想,用 Map Reduce 两个函数提供了高层
的并行编程抽象模型
Map: 对一组数据元素进行某种重复式的处理;
Reduce: Map 的中间结果进行某种进一步的结果整理。
Map Reduce 为程序员提供了一个清晰的操作接口抽象描述。 MapReduce
处理的数据类型是键值对。
MapReduce 中定义了如下的 Map Reduce 两个抽象的编程接口,由用户去编程
实现 :
Map: (k1; v1) → [(k2; v2)]
Reduce: (k2; [v2]) → [(k3; v3)] MapReduce 框架结构
一个完整的 mapreduce 程序在分布式运行时有三类实例进程:
1. MRAppMaster 负责整个程序的过程调度及状态协调
2. MapTask 负责 map 阶段的整个数据处理流程
3. ReduceTask 负责 reduce 阶段的整个数据处理流程 2. MapReduce 编程规范
MapReduce 的开发一共有八个步骤 , 其中 Map 阶段分为 2 个步骤, Shuffle 阶段 4
个步骤, Reduce 阶段分为 2 个步骤
Map 阶段 2 个步骤
1. 设置 InputFormat , 将数据切分为 Key-Value (K1 V1) , 输入到第二步
2. 自定义 Map 逻辑 , 将第一步的结果转换成另外的 Key-Value K2 V2 ) 对 , 输出结
Shuffle 阶段 4 个步骤
1. 对输出的 Key-Value 对进行分区
2. 对不同分区的数据按照相同的 Key 排序
3. ( 可选 ) 对分组过的数据初步规约 , 降低数据的网络拷贝
4. 对数据进行分组 , 相同 Key Value 放入一个集合中
Reduce 阶段 2 个步骤
1. 对多个 Map 任务的结果进行排序以及合并 , 编写 Reduce 函数实现自己的逻辑 , 对输
入的 Key-Value 进行处理 , 转为新的 Key-Value K3 V3 )输出
2. 设置 OutputFormat 处理并保存 Reduce 输出的 Key-Value 数据

你可能感兴趣的:(大数据)