Mapreduce工作全流程
mapreduce工作三大核心问题
1.图示

- 读数据到底是怎么回事?
- shuffle到底是什么?
- 结果数据到底是怎么回事?
mapreduce的工作流程
1.读数据
1.1对文件切片产生的问题的解决
- 图示

-
理解:当文件进行切片时,有可能会把单词且分开比如:hello切分为he和llo
为了能够完整的,不出错的统计每一个单词的出现。有以下解决方案
-
解决思想:因为默认的读取操作是,默认读取文件的一行数据,读取器不会管你是不是在这一行切开了。根据这个特性来进行框架规定了解决方案。
-
解决方案(读取规则):
- 每个maptask都向下多读一行
- 每一个maptask都要抛弃读取的第一行数据
- 第一个maptask不需要抛弃第一行
- 最后一个maptask不往下多读一行
1.2图示

1.3读文件流程
- maptask调用TextInputFormat.
- TextInputFormat:指定去读什么文件,比如:去文本文档中,数据库等
- TextInputFormat调用createLineRecordReader方法后,会生成一个Reader(具体怎么去读)
- 生成了一个LineRecordReader对象,按行读
- nextkeyvalue

本文详细阐述MapReduce的工作流程,包括读数据、Shuffle阶段、Reduce的执行和写出。重点介绍了数据切片问题的解决、Shuffle的分区、排序和归并过程,以及MapReduce中可干预的环节如Partitioner、Combiner和GroupingComparator的使用。
最低0.47元/天 解锁文章
8644

被折叠的 条评论
为什么被折叠?



