码迷,mamicode.com
首页 > 其他好文 > 详细

大数据离线(四)

时间:2018-08-01 20:47:50      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:三层   类型   dfs   input   mapred   相对   思想   exti   pre   

MapReduce

MapReduce计算模型

  1. MapReduce的思想就是“ 分而治之”
    Map 负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”包含三层含义:一是数据或计算的规模相对任务要大大缩小;二是就近计算原则,即任务会分配到存放着所需数据的节点上进行计算;三是这些小任务可以并行计算,彼此间几乎没有依赖关系。
    Reduce 负责对 map 阶段的结果进行汇总。
  2. MapReduce设计构思
    ①如何对付大数据处理:分而治之
    ②构建抽象模型:Map 和 Reduce两个函数
    MapReduce 处理的数据类型是<key,value>键值对
    ③统一构架,隐藏系统层细节

  3. MapReduce框架结构
    ①MRAppMaster:负责整个程序的过程调度及状态协调
    ②MapTask:负责 map 阶段的整个数据处理流程
    ③ReduceTask:负责 reduce 阶段的整个数据处理流程
    技术分享图片

MapReduce处理流程

技术分享图片

Mapper任务执行过程

  • 第一阶段是把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认情况下,Split size = Block size。每一个切片由一个MapTask 处理。
  • 第二阶段是对切片中的数据按照一定的规则解析成<key,value>对。默认规则是把每一行文本内容解析成键值对。key 是每一行的起始位置(单位是字节),value 是本行的文本内容。(TextInputFormat)
  • 第三阶段是调用 Mapper 类中的 map 方法。上阶段中每解析出来的一个<k,v>,调用一次 map 方法。每次调用 map 方法会输出零个或多个键值对。
  • 第四阶段是按照一定的规则对第三阶段输出的键值对进行分区。默认是只有一个区。分区的数量就是 Reducer 任务运行的数量。默认只有一个Reducer 任务。
  • 第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。那么排序后的结果是<1,3>、<2,1>、<2,2>。
  • 第六阶段(可选,默认没有)是对数据进行局部聚合处理,也就是 combiner 处理。键相等的键值对会调用一次 reduce 方法。经过这一阶段,数据量会减少。

Reducer任务执行过程

  • 第一阶段是 Reducer 任务会主动从 Mapper 任务复制其输出的键值对。Mapper 任务可能会有很多,因此 Reducer 会复制多个 Mapper 的输出。
  • 第二阶段是把复制到 Reducer 本地数据,全部进行合并,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
  • 第三阶段是对排序后的键值对调用 reduce 方法。键相等的键值对调用一次reduce 方法,每次调用会产生零个或者多个键值对。最后把这些输出的键值对写入到 HDFS 文件中

大数据离线(四)

标签:三层   类型   dfs   input   mapred   相对   思想   exti   pre   

原文地址:https://www.cnblogs.com/lifuwei/p/9403496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!