初学耗时:1h
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
一、MapReduce的处理流程解析
1.1 Mapper 任务执行过程详解。
1.2 Reducer 任务执行过程详解。
记忆词:
Mapper、Reduce、任务执行过程
一、MapReduce的处理流程解析
1.1 ~ Mapper 任务执行过程详解。
1.1.1 . 第一阶段。
- 把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。
- 默认情况下,Split size = Block size。
- 每一个切片由一个MapTask 处理。(getSplits)
1.1.2 . 第二阶段。
- 对切片中的数据按照一定的规则解析成<key,value>对。
- 默认规则是把每一行文本内容解析成键值对。
- key 是每一行的起始位置(单位是字节),value 是本行的文本内容。(TextInputFormat)
1.1.3 . 第三阶段。
- 调用 Mapper 类中的 map 方法。
- 上阶段中每解析出来的一个<k,v>,调用一次 map 方法。
- 每次调用 map 方法会输出零个或多个键值对。
1.1.4 . 第四阶段。
- 按照一定的规则对第三阶段输出的键值对进行分区。
- 默认是只有一个区。
- 分区的数量就是 Reducer 任务运行的数量。
- 默认只有一个Reducer 任务。
1.1.5 . 第五阶段。
- 对每个分区中的键值对进行排序。
- 首先,按照键进行排序,对于键相同的键值对,按照值进行排序。
- 比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。
- 那么排序后的结果是<1,3>、<2,1>、<2,2>。
- 如果有第六阶段,那么进入第六阶段;如果没有,直接输出到文件中。
1.1.6 . 第六阶段。
- 对数据进行局部聚合处理,也就是 combiner 处理。
- 键相等的键值对会调用一次 reduce 方法。
- 经过这一阶段,数据量会减少。
- 本阶段默认是没有的。
1.2 ~ Reducer 任务执行过程详解。
1.2.1 . 第一阶段。
- Reducer 任务会主动从 Mapper 任务复制其输出的键值对。
- Mapper 任务可能会有很多,因此 Reducer 会复制多个Mapper 的输出。
1.2.2 . 第二阶段。
- 把复制到 Reducer 本地数据,全部进行合并,即把分散的数据合并成一个大的数据。
- 再对合并后的数据排序。
1.2.3 . 第三阶段。
- 对排序后的键值对调用 reduce 方法。
- 键相等的键值对调用一次reduce 方法,每次调用会产生零个或者多个键值对。
- 最后把这些输出的键值对写入到 HDFS 文件中。
在整个 MapReduce 程序的开发过程中,我们最大的工作量是覆盖 map 函数和覆盖 reduce 函数。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
^ 至此,MapReduce的处理流程解析完成。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
※ 世间诱惑何其多,坚定始终不动摇。
在第一个事务以S封锁方式读数据M时,第二个事务对数据M的读方式会遭到失败的是:
…
A、实现共享时封锁的读。
B、不加封锁的读。
C、实现S封锁的读。
D、实现X封锁的读。
…
D
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!