mapreduce中map阶段的主要流程是什么?
一、mapreduce中map阶段的主要流程
1.首先进行一系列的逻辑操作
map方法首先进行一系列的逻辑操作,执行完成后最后进行写操作。map方法如果直接写给reduce的话,相当于直接操作磁盘,太多的IO操作,使得效率太低,所以在map和reduce中间还有一个shuffle操作。
2. 通过outputCollector向环形缓冲区写入数据
map处理完成相关的逻辑操作之后,首先通过outputCollector向环形缓冲区写入数据,环形缓冲区主要两部分,一部分写入文件的元数据信息,另一部分写入文件的真实内容。
3. 进行反向溢写
环形缓冲区的默认大小是100M,当缓冲的容量达到默认大小的80%时,进行反向溢写。在溢写之前会将缓冲区的数据按照指定的分区规则进行分区和排序,之所以反向溢写是因为这样就可以边接收数据边往磁盘溢写数据。在分区和排序之后,溢写到磁盘,可能发生多次溢写,溢写到多个文件,对所有溢写到磁盘的文件进行归并排序,在9到10步之间还可以有一个Combine合并操作,意义是对每个MapTask的输出进行局部汇总,以减少网络传输量。
延伸阅读:
二、MapTask各阶段
整个MapTask分为Read阶段,Map阶段,Collect阶段,溢写(spill)阶段和combine阶段。
Read阶段
MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value
Map阶段
该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value
Collect收集阶段
在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中
Spill阶段
即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。
以上就是关于mapreduce中map阶段的内容希望对大家有帮助。

猜你喜欢LIKE
相关推荐HOT
更多>>
PMP的价值有哪些?
一、提升个人能力获得PMP认证是项目管理领域的一个重要里程碑,它要求申请人具备一定的项目管理经验和知识体系。通过准备PMP考试,个人需要系统...详情>>
2023-10-17 23:45:13
接口测试有哪些工具?
一、PostmanPostman是一款强大的HTTP请求工具,主要用于接口测试。它可以支持各种类型的HTTP请求,如GET、POST、PUT等,支持多种数据格式如JSON...详情>>
2023-10-17 21:59:16
DNF和Yum的区别,为什么Yum会被DNF取代?
一、DNF和Yum的区别1、包管理工具Yum:Yum是较早出现的包管理工具,它是Red Hat Linux和CentOS等系统默认使用的软件包管理工具。DNF:DNF是Yum...详情>>
2023-10-17 20:39:12
抗锯齿技术FXAA、FSAA与MSAA有什么区别?
一、概念不同FXAA是一种基于像素的抗锯齿技术,它通过对图像进行模糊处理来消除锯齿状边缘。FSAA是一种基于几何的抗锯齿技术,它通过对图像中的...详情>>
2023-10-17 19:03:55