MapReduce经典简答题

举报
大数据梦想家 发表于 2021/09/28 23:01:46 2021/09/28
【摘要】         在上一个阶段——HDFS,小菌出过一期HDFS的经典面试题,不知道小伙伴们掌握的怎么样吖(详情见–>《...

        在上一个阶段——HDFS,小菌出过一期HDFS的经典面试题,不知道小伙伴们掌握的怎么样吖(详情见–>《HDFS经典面试题》),本期同样在MapReduce快要结束阶段为大家带来MapReduce的经典面试题!

MapReduce核心思想

map负责切分,reduce负责合并(先分后合,分而治之)

  
 
  • 1

如何理解偏移量

每行的行首到首行行首的距离

  
 
  • 1

Suffle包含哪些步骤

分区(partition)------->排序(sort)------->数据优化计算(combine)------->分组(group)

  
 
  • 1

MR从读取数据开始到将最终结果写入HDFS经过哪些步骤

第一步:inputformat  数据读取
           ↓
           ↓
第二步:split 将获取的数据进行逻辑切分
           ↓
           ↓
第三步: recordReader(将数据以\n切分,进行再次切分,并输出key(行首字母的偏移量),value(一行的数据))
           ↓
           ↓
第四步: Map接收key(行首字母偏移量),value(一行的数据),根据业务需求编写代码,输出(key,value  的list)
           ↓
           ↓
     输出给Shuffle(partition)
           ↓
           ↓
     shffle(核心机制: 数据分区,排序,分组,ComBine,合并等过程)输出key     value的list
           ↓
           ↓
第五步:partition :按照一定的规则对key,value 的 list 进行分区
输出给Shuffle(sort)
           ↓
           ↓
第六步:Sort :对每个分区内的数据进行排序。
输出给Shuffle(combiner)
           ↓
           ↓
第七步: Combiner: 在Map端进行局部聚合(汇总)
目的是为了减少网络带宽的开销
输出给Shuffle(group)
           ↓
           ↓
第八步: Group: 将相同key的key提取出来作为唯一的key,将相同key 对应的value 提取出来组装成一个value 的List
输出给Shuffle(reduce)
           ↓
           ↓
第九步: Reduce:根据业务需求对传入的数据进行汇总计算
输出给Shuffle(outputFormat)
           ↓
           ↓
第十步: outputFormat:将最终的结果的写入到HDFS


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

如何设置ReduceTask的数量

 job.setNumReduceTasks(个数);

  
 
  • 1

Combiner的作用

Map结束后,在Map端进行局部聚和。作用:较少网络传出次数,降低了网络带宽开销。

  
 
  • 1

combiner运行在MapReduce的哪一端?

Map端。在Map端中shuffle中。

  
 
  • 1

Maptask的数量是可以人为设置的吗?

不可以


  
 
  • 1
  • 2

Shuffle阶段的Partition分区算法是什么

对map输出的key 取哈希值,用这个哈希值与reducetask的个数值取余。
余几,就将这个key,value放在对应的分区编号里(分区有多个编号)。

  
 
  • 1
  • 2

Split逻辑切分数据,节分大小是多大?

128M

  
 
  • 1

内存角度介绍Map的输出到Reduce的输入的过程。

`Map的输出到内存`
     Map将数据传入环形缓冲区(默认100MB 可修改),环形缓冲区中的数据到达一定的阈值时(默认0.8 可修改)进行溢写生成好多临
时文件,多个临时文件到达一定数量进行merge合并成一个大文件。

`Reduce数据读取`
     reduce会主动去发起拷贝线程到maptask获取属于自己的数据,数据会进入ReduceTask中的环形缓冲区,当缓冲区中的数据量到达
一定阈值进行溢写,多个临时文件merge合并成一个大文件,最后输入到Reduce。

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最优的Map效率是什么?

Map端的最高效率是:尽量减少环形缓冲区flush的次数(减少磁盘IO 的使用次数)
			增加环形缓冲区内存
			将阈值上调
			压缩map输出的数据大小(消耗cpu)

  
 
  • 1
  • 2
  • 3
  • 4

最优的reduce是什么?

			Reduce端的最高效率是:尽量减少环形缓冲区flush的次数
			尽量将数据放在内存上进行计算

  
 
  • 1
  • 2

在MR阶段,有哪些可以优化的点?

		1、加大环形缓冲区的内存
		2、增大缓冲区阈值的大小 (考虑剩余的空间是不是够系统使用)
		3、对输出的进行压缩(压缩-解压的过程会消耗CPU)

  
 
  • 1
  • 2
  • 3

集群优化的核心思路是什么?

			在网络带宽、磁盘IO是瓶颈的前提下	
			能不使用IO 网络就不使用,在必须使用的前提下,能少用就少用。
			所有的,只要能够减少网络带宽的开销,只要能够减少磁盘io的使用的次数的配置项,都是集群调优的可选项。
			(可选项包括: 软件层面【系统软件和集群软件】,硬件层面,网络层面)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

        本期MapReduce经典面试题的分享就到这里了,受益的小伙伴们不要忘了点赞关注小菌。后续小菌将推出Hadoop之Hive系列!敬请期待(๑>︶<)و







在这里插入图片描述

文章来源: alice.blog.csdn.net,作者:大数据梦想家,版权归原作者所有,如需转载,请联系作者。

原文链接:alice.blog.csdn.net/article/details/103096564

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。