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

目录

介绍下MapReduce

MapReduce优缺点

MapReduce架构

MapReduce工作原理

MapReduce哪个阶段最费时间

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

✅MapReduce环形缓冲区是什么

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

MapReduce为什么一定要有Shuffle过程

MapReduce的Shuffle过程及其优化

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

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

[MapReduce Shuffle的排序算法](#MapReduce Shuffle的排序算法)

shuffle为什么要排序?

说一下map是怎么到reduce的?

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

MapReduce的数据处理过程

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

reducejoin如何执行(原理)

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

MapReduce分区及作用

ReduceTask数量和分区数量关系

Map的分片有多大

[MapReduce join两个表的流程?](#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为什么能解决数据倾斜](#Map Join为什么能解决数据倾斜)

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

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

MapReduce压缩方式

MapReduce中怎么处理一个大文件


介绍下MapReduce

MapReduce优缺点

MapReduce架构

MapReduce工作原理

MapReduce哪个阶段最费时间

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

Combiner合并

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

2)Combiner组件的父类就是Reducer

  1. 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)面试题及答案_牛客网

相关推荐
媒体人8888 分钟前
GEO 优化专家孟庆涛:技术破壁者重构 AI 时代搜索逻辑
大数据·人工智能
艾伦~耶格尔30 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
一只叫煤球的猫1 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心1 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
君不见,青丝成雪2 小时前
hadoop技术栈(九)Hbase替代方案
大数据·hadoop·hbase
晴天彩虹雨2 小时前
存算分离与云原生:数据平台的新基石
大数据·hadoop·云原生·spark
朗迪锋2 小时前
数字孪生 :提高制造生产力的智能方法
大数据·人工智能·制造
杨荧3 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化
健康平安的活着3 小时前
es7.x es的高亮与solr高亮查询的对比&对比说明
大数据·elasticsearch·solr
缘华工业智维4 小时前
CNN 在故障诊断中的应用:原理、案例与优势
大数据·运维·cnn