【大数据面试】MapReduce常见问题与答案

发布时间:2023年12月19日

目录

介绍下MapReduce

MapReduce优缺点

MapReduce架构

MapReduce工作原理

MapReduce哪个阶段最费时间

?MapReduce中的Combine是干嘛的?有什么好出?

?MapReduce环形缓冲区是什么

?MapReduce为什么一定要有环型缓冲区

MapReduce为什么一定要有Shuffle过程

MapReduce的Shuffle过程及其优化

Reduce怎么知道去哪里拉Map结果集?

Reduce阶段都发生了什么,有没有进行分组

MapReduce Shuffle的排序算法

shuffle为什么要排序?

说一下map是怎么到reduce的?

说一下你了解的用哪几种shuffle机制?

MapReduce的数据处理过程

mapjoin的原理(实现)?应用场景?

reducejoin如何执行(原理)

MapReduce为什么不能产生过多小文件

MapReduce分区及作用

ReduceTask数量和分区数量关系

Map的分片有多大

MapReduce join两个表的流程?

手撕一段简单的MapReduce程序

reduce任务什么时候开始?

MapReduce的reduce使用的是什么排序?

MapReduce怎么确定MapTask的数量?

Map数量由什么决定

MapReduce的map进程和reducer进程的ivm垃圾回收器怎么选择可以提高吞吐量?

MapReduce的task数目划分

MapReduce作业执行的过程中,中间的数据会存在什么地方?不会存在内存中么?

Mapper端进行combiner之后,除了速度会提升,那从Mapper端到Reduece端的数据量会怎么变?

map输出的数据如何超出它的小文件内存之后,是落地到磁盘还是落地到HDFS中?

Map到Reduce默认的分区机制是什么?

结合wordcount述说MapReduce,具体各个流程,map怎么做,reduce怎么做

MapReduce数据倾斜产生的原因及其解决方案

Map Join为什么能解决数据倾斜

MapReduce运行过程中会发生OOM,OOM发生的位置?

MapReduce用了几次排序,分别是什么?

MapReduce压缩方式

MapReduce中怎么处理一个大文件


介绍下MapReduce

MapReduce优缺点

MapReduce架构

MapReduce工作原理

MapReduce哪个阶段最费时间

?MapReduce中的Combine是干嘛的?有什么好出?

Combiner合并

1)Combiner是MR程序汇总Mapper和Reducer之外的一种组件

2)Combiner组件的父类就是Reducer

3)? Combiner和Reducer组件的区别局在于运行的位置

■ Combiner是在每一个MapTask所在的节点运行
■ Reducer是接受全局的所有Mapper的输出结果,然后进行运算。

4)Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减少网络传输量。

5)Combiner能够应用的前提是不能影响最终的业务逻辑。

自定义Combiner实现步骤:

■ 1.自定义一个Combiner并继承Reducer,重写Reduce方法
■ 2.在Job驱动中配置使用。

?MapReduce环形缓冲区是什么

环形缓冲区分为三块,空闲区、数据区、索引区。初始位置取名叫做“赤道”,就是圆环上的白线那个位置。初始状态的时候,数据和索引都为0,所有空间都是空闲状态。数据是从赤道的右边开始写入,索引(每次申请4kb)是从赤道是左边开始写,两个文件是独立的,执行期间互不干涉。

在数据和索引的大小到了mapreduce.map.sort.spill.percent参数设置的比例时(默认80%,这个是调优的参数),会有两个动作:
1、对写入的数据进行原地排序,并把排序好的数据和索引spill到磁盘上去;
2、在空闲的20%区域中,重新算一个新的赤道,然后在新赤道的右边写入数据,左边写入索引;
3、当20%写满了,但是上一次80%的数据还没写到磁盘的时候,程序就会panding一下,等80%空间腾出来之后再继续写。
如此循环往复,永不停歇,直到所有任务全部结束。整个操作都在内存,形状像一个环,所以才叫环形缓冲区。

?MapReduce为什么一定要有环型缓冲区

环形缓冲区不需要重新申请新的内存,始终用的都是这个内存空间。大家知道MR是用java写的,而Java有一个最讨厌的机制就是Full GC。Full GC总是会出来捣乱,这个bug也非常隐蔽,发现了也不好处理。环形缓冲区从头到尾都在用那一个内存,不断重复利用,因此完美的规避了Full GC导致的各种问题,同时也规避了频繁申请内存引发的其他问题。

另外呢,环形缓冲区同时做了两件事情:1、排序;2、索引。在这里一次排序,将无序的数据变为有序,写磁盘的时候顺序写,读数据的时候顺序读,效率高非常多!

在这里设置索引区也是为了能够持续的处理任务。每读取一段数据,就往索引文件里也写一段,这样在排序的时候能加快速度。

MapReduce为什么一定要有Shuffle过程

MapReduce的Shuffle过程及其优化

Reduce怎么知道去哪里拉Map结果集?

Reduce阶段都发生了什么,有没有进行分组

MapReduce Shuffle的排序算法

shuffle为什么要排序?

说一下map是怎么到reduce的?

说一下你了解的用哪几种shuffle机制?

MapReduce的数据处理过程

mapjoin的原理(实现)?应用场景?

reducejoin如何执行(原理)

MapReduce为什么不能产生过多小文件

MapReduce分区及作用

ReduceTask数量和分区数量关系

Map的分片有多大

MapReduce join两个表的流程?

手撕一段简单的MapReduce程序

reduce任务什么时候开始?

MapReduce的reduce使用的是什么排序?

MapReduce怎么确定MapTask的数量?

Map数量由什么决定

MapReduce的map进程和reducer进程的ivm垃圾回收器怎么选择可以提高吞吐量?

MapReduce的task数目划分

MapReduce作业执行的过程中,中间的数据会存在什么地方?不会存在内存中么?

Mapper端进行combiner之后,除了速度会提升,那从Mapper端到Reduece端的数据量会怎么变?

map输出的数据如何超出它的小文件内存之后,是落地到磁盘还是落地到HDFS中?

Map到Reduce默认的分区机制是什么?

结合wordcount述说MapReduce,具体各个流程,map怎么做,reduce怎么做

MapReduce数据倾斜产生的原因及其解决方案

Map Join为什么能解决数据倾斜

MapReduce运行过程中会发生OOM,OOM发生的位置?

MapReduce用了几次排序,分别是什么?

MapReduce压缩方式

MapReduce中怎么处理一个大文件

参考:大数据(MapReduce)面试题及答案_牛客网


?

文章来源:https://blog.csdn.net/weixin_40035038/article/details/135069375
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。