千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:南京千锋IT培训  >  技术干货  >  mapreduce中map阶段的主要流程是什么?

mapreduce中map阶段的主要流程是什么?

来源:千锋教育
发布人:xqq
时间: 2023-10-17 07:22:12

一、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

猫(Modem)和路由器有什么区别?

2023-10-17

天使投资、VC 以及 PE 的区别是什么?

2023-10-17

从按键到响应,键盘的底层原理是什么?

2023-10-17

最新文章NEW

同样表示错误,mistake和error有什么区别?

2023-10-17

服务器和电脑主机有什么区别?

2023-10-17

为什么HashMap是线程不安全的?

2023-10-17

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>