MapReduce工作流程
2021-04-27 15:38:55 0 举报
为你推荐
查看更多
MapReduce工作流程
作者其他创作
大纲/内容
分区n
font color=\"#ff3399\
分区2
写出文件至HDFS
第11步:Reduce 开始分别拉取 MapTask0 和 MapTask1 任务的数据。ReduceTask0处理分区1数据,ReduceTask1处理分区2数据(ReduceTask0 只会拉取这两个MapTask中分区1的数据,ReduceTask1只会拉取分区2的数据b style=\
第12步:对拉取回来的数据进行合并,全局归并排序
重写的map方法
......
数据写出流程
font color=\"#0000ff\
LineRecordReader
第13步:进入到自定义reduce方法业务代码(key为mapTask中的key返回值,value相同key值返回的集合)
分区1
RecorderReader
第11步
第6步:环形缓冲区中,首先数据会被标记为不同分区。(比如分区1、分区2(分区可根据情况设置多个),不同分区会进入到不同的ReduceTask中);并对分区内部的数据进行排序(使用的是快排)。这种排序方式并不是对实际的数据进行排序,而是对索引数据进行排序,不影响实际数据,这样效率最高
index
拉取回来的数据,在MapTask阶段是有序的,但是从不同MapTask拉取回来相同分区的数据后,数据就又无序了!!!
如果该图对您有用,请在右上角给点个赞吧。5个赞我能多一张文件,支持作者继续画出更好的时序图给大家,谢谢大家支持配套博客介绍:请搜索CSDN 扛麻袋的少年--Hadoop模块 2021年04月27日
注意:归并后的数据,还是在一个文件中(别误以为多个分区就在多个文件中)
环形缓冲区存储如下内容
FileInputFormat
outputCollector收集器
font color=\"#7f00ff\
ReduceTask0
FileOutputFormat
MapTask1
第8步:将溢出文件进行Merge操作,然后进行归并排序(最终归并排序后的数据,还是在一个文件中),此时文件已经存储在磁盘中。Merge后为什么还要归并排序? 为下一步的Combiner合并做准备
key
合并、归并排序
第10步:200M文件,按照Block块(128M)切片,需要2个分片,如下为2个MapTask处理后返回的结果
OutputFormat
Part-r-000000
Part-r-000001
任务代码
Meta 元数据
MapTask1执行流程省略(同MapTask0一模一样)
归并排序
Records记录
MapTask0
hadoop202
溢出文件1
溢出文件2
文件上传至HDFS
valstart
第7步:如果数据比较大,则会有很多个溢出文件(内存--->磁盘),每个溢出文件中存储的都是已经分区、排序后的内容(分区且分区内数据有序)。如图所示(黄色部分为每个分区中的模拟数据)
溢出文件
hadoop203
test.txt容量:200M
font color=\"#6600cc\
InputFormat
Hadoop集群
指定路径:hdfs://.../.staging/application_id
main(){ // 提交job job.waitForCompletion(true);}
溢出文件n
数据读取流程
Merge、归并排序
环形缓冲区
MapTask1省略所有过程,参考MapTask0
value
第1步:MapTask根据任务提交时,提供的jar包、切片信息、任务执行参数,形成一个任务分配规划(0-128M 由MapTask0处理,128M-200M由MapTask1处理)
3个重要文件:job.split (切片信息)wordcount.jar (job任务jar包)job.xml (任务执行参数信息)
TextOutputFormat
Combiner合并
TextInputFormat
@Overrideprotected void map(font color=\"#ff3333\
...... ......
(可选步骤)
分区1排序
keystart
分区、排序
ReduceTask1
@Overrideprotected void reduce(font color=\"#ff3333\
分区2排序
提示:因为Combiner合并为可选步骤,此处在进入ReduceTask之前,选择未进行Combiner的数据(本例为wordcount,如果mapTask阶段执行combiner合并后,则已经计数完成,则就没有reduceTask什么事了,哈哈)
合并
环形缓冲区,默认100M,使用容量达到 80%,开始反向溢写,将缓冲区内容写入至磁盘
MapReduce工作流程,可配套Yarn工作流程学习,Yarn工作流程图参考:https://www.processon.com/view/link/6087be52e0b34d6410aed324
Merge
hadoop201
分区n排序
第2步:根据提交任务时提供的信息,到指定路径下将这些资源加载到MapTask本地
unsued
partition
0 条评论
回复 删除
下一页