MapReduce思考问题

MapReduce思考问题(每一个都算面试题)

Q1、map数量数越多越好吗?

不是,因为产生map任务是需要资源和时间,map任务越多,占用的资源和时间越多

Q2、hdfs是否适合存储小文件(MR角度出发)

不适合,小文件一多,意味着block块就多了,切片split也就多了,这样产生的map数量也就多了起来

Q3、split和map的关系

split的大小默认和block大小一致,如果想要减少map任务,就要将split切片大小调大,反之就调小

Q4、split大小可以随意调整吗?

split切片大小理论上来说调多大都可以,但是官方建议是128的整倍数,为了防止跨界点存储数据,加大网络消耗带宽,增加读取数据时间

Q5、map的数量一定是与split切片数量一致吗?

如果最后两个split切片实际大小加起来没有超过128M*1.1,那么会被读取到一个map任务中进行操作,如果超过的话,就分为两个map任务读取数据进行操作

Q6、map以什么样的格式读取数据

默认情况下读取文件中的一行数据,将这一行数据封装成一个键值对读取进来,键值对的默认类型是<LongWritable,Text>,LongWritable代表的是行开始索引,Text代表的是一行数据

Q7、 reduce默认的个数可以调整吗?

可以调整,默认mr只提供一个reduce,但是将来可以在代码中或者集群配置文件中设置reduce的个数

Q8、reduce的个数会带来什么影响

a、有几个reduce最终就会产生几个结果文件
b、reduce的数量会影响数据在环形缓冲区的分区编号的计算
c、reduce的数量也会影响整体的执行速度和效率

Q9、reduce干了什么

reduce主要是先从map中的结果文件中的对应数据拉取过来,去除编号后,对拉取到的小文件进行归并排序,执行reduce逻辑

针对整个MapReduce整个流程的思考

Q1、map的数量可以通过配置文件设置吗?

map的数量不能直接进行设置,但是可以设置splt切片的大小来影响map的数量

Q2、整个MapReduce过程中,经历了几次排序,分别是?

过程中总共经历了三次排序,分别是一次快速排序和两次归并排序,快速排序发生在环形缓冲区内部排序之后,第一次归并排序是是在环形缓冲区溢写完小文件之后,新进程将小文件进行归并排序生成map任务结果文件,第二次归并排序是在reduce拉取完每个map任务结果文件之后对这些拉取的数据进行归并排序

Q3、MapReduce中的shuffle阶段是哪几个阶段(请你说一说MapReduce中的shuffle阶段)

shuffle并不是官方定义的,是人为定义的一种阶段,是从map进入到环形缓冲区的时候到执行reduce任务之前这个阶段(也就是图中的红色虚线框这一部分)
还有一种shuffle阶段划分,map阶段shuffle和reduce阶段shuffle:
map阶段shuffle就是在map进入环形缓冲区之后到redue进行拉取之前这个阶段
reduce阶段shuffle是在reduce拉取数据到执行reduce执行任务之前整个阶段

MapReduce流程

posted @   peculiar-  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示