MapReduce重点(Map阶段,Reduce阶段,Shuffle阶段)

更新时间:2023-06-11 13:22:49 阅读: 评论:0

壮阳运动
嘉兴南北湖黄虚线MapReduce重点(Map阶段,Reduce阶段,Shuffle阶段)⼀、MapReduce的⼯作流程
1、Map阶段
(1)读取hdfs上的⽂件,每个block启动⼀个maptask,按⾏读取⼀个block中的内容。
(2)map函数对数据split拆分,得到数组,组成⼀个键值对<word,1>
(3)做分区对应多个reduceTask
(4)分区数据,按key分组排序
沙棘籽油(5)在map端执⾏⼩reduce,⼀个map中输出<key,times>
素描球2、Rudeuce阶段
(1) 每个分区对应⼀个reduce task,他会读取(所有map节点上的maptask)相同分区的所有输出
(2) reduce Task对接受的所有map输出,排序
(3) 执⾏reduce,对数据累加
(4) 输出到hdfs上
3、shuffle过程
原因:因为频繁的磁盘I/O操作会严重降低效率,所以"中间结果"不会⽴马写⼊磁盘,⽽是先存储到map节点"环形缓冲区"
1)MapTask收集我们的map()⽅法输出的kv对,放到内存缓冲区中
2)从内存缓冲区不断溢写到本地磁盘⽂件,可能会溢出多个⽂件
3)多个溢出⽂件会被合并成⼤的溢出⽂件
4)在溢出过程及合并的过程中,都要调⽤Partitioner进⾏分区和针对key进⾏排序
5)ReduceTask根据⾃⼰的分区号,去各个MapTask机器上取相应的结果分区数据
6)ReduceTask会取到同⼀个分区的来⾃不同MapTask的结果⽂件,ReduceTask会将这些⽂件再进⾏合并(归并排序)7)合并成⼤⽂件后,Shuffle的过程也就结束了,后⾯进⼊ReduceTask的逻辑运算过程(从⽂件中取出⼀个⼀个的键值对Group,调⽤⽤户⾃定义的reduce()⽅法)
注意:
got是什么意思Shuffle中的缓冲区⼤⼩会影响到MapReduce程序的执⾏效率,原则上说,缓冲区越⼤,磁盘io的次数越少,执⾏速度就越快。手语学习
和弦怎么配缓冲区的⼤⼩可以通过参数调整,参数:io.sort.mb默认100M

本文发布于:2023-06-11 13:22:49,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/929799.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:缓冲区   数据   分区   合并   磁盘   结果   过程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图