前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MapReduce面试题

MapReduce面试题

作者头像
刘浩的BigDataPath
发布2021-04-13 14:27:59
1.3K0
发布2021-04-13 14:27:59
举报
文章被收录于专栏:大数据那些年大数据那些年

1.MapReduce核心思想 分而治之,先分后和(只有一个模型) 【将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并。适用于大量复杂的、时效性不高的任务处理场景(大规模离线数据处理场景)。】 Map负责数据拆分 map: [k1,v1] → [(k2,v2)] Reduce负责数据合并 reduce: [k2, {v2,…}] → [k3, v3]

2.偏移量 :指的是每行行首字母移动到文办的最前面需要一定的字符。

3.Suffle包含哪些步骤 partition(分区)-sort(排序)-combiner(局部聚合)=group(分组)

4.MR从读取数据开始到将最终结果写入HDFS经过哪些步骤: 第一步:InputFormat InputFormat 在HDFS文件系统中读取要进行计算的数据输出给Split 第二步:Split Split 将数据进行逻辑切分,切分成多个任务。输出给RR 第三步:RR( RecordReader) RR 将切分后的数据转换成key value进行输出 key : 每一行行首字母的偏移量 value: 每一行数据输出给Map 第四步:Map 接收一条一条的数据(有多少行数据Map运行多少次,输出的次数根据实际业务需求而定)根域业务需求编写代码 Map的输出是 key value的 list 输出给Shuffle(partition) ---------------------------------------Map------------------------------------------------------ 第五步: partition partition: 按照一定的规则对 **key value的 list进行分区输出给Shuffle(sort) 第六步:Sort Sort :对每个分区内的数据进行排序。 输出给Shuffle(Combiner) 第七步:Combiner Combiner: 在Map端进行局部聚合(汇总) 目的是为了减少网络带宽的开销输出给Shuffle(Group) 第八步:Group Group: 将相同key的key提取出来作为唯一的key 将相同key对应的value提取出来组装成一个value 的List 输出给Shuffle(reduce) ------------------------------------Shuffle-------------------------------------------- 第九步:reduce reduce: 根据业务需求对传入的数据进行汇总计算。输出给Shuffle(outputFormat) 第十步:outputFormat outputFormat:将最终的额结果写入HDFS

5.如何设置ReduceTask的数量 reducetask的设置: job.setNumReduceTasks(2);

6.combiner的作用 Map结束后,在Map端进行局部聚和。 作用:较少网络传入次数,降低了网络开销。

7.combiner运行在MapReduce的哪一端? map 每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能.

8.Maptask的数量是可以人为设置的吗? 不可以。

9.Shuffle阶段的Partition分区算法是什么 计算逻辑:对map输出的key 取哈希值,用这个哈希值与reducetask的值取余。 余几,就将这个key,value放在对应的分区编号里(分区有多个编号)

10.Split逻辑切分数据,节分大小是多大? hdfs数据块大小是128 ,split 逻辑切分数据块大小是128M HDFS 128 是存储层面的概念, 是切分数据的分界点。 split 128 是一个逻辑切分。 这两个128没有关系。

11内存角度介绍Map的输出到Reduce的输入的过程。 1.Map 输出数据到内存: map输出的数据写入环形缓冲区(内存),缓冲区的默认大小是100M(可修改)。当数据达到阈值(默认0.8-可修改)时,环形缓冲区进行flash, 环形缓冲区:数据在输出的同时,数据也可以写入空余的空间内。 当flash的数据个数达到一定的数量时(默认4个)。对数据进行合并(merge)。 2:Reduce在Map拷贝数据 Map 输出的结果写入本地,reduce主动发出拷贝进程到Map端拷贝数据。 reduce获取大数据后,将数据写入内存,当数据达到阈值时进行flash. 当flash的个数达到一定的量时,进行合并,最终发送给reduce

12.最优的Map效率是什么? Map端的最高效率:尽量减少环形缓冲区flush的次数(减少磁盘IO的使用次数)

13.最优的reduce是什么? 1.尽量减少环形缓冲区flush的次数 2.尽量将所有的数据在内存计算。

14.在MapReduce阶段,有哪些优化的点?(至少两个点) 1、加大环形缓冲区的内存 2、增大缓冲区阈值的大小 (考虑剩余的空间是不是够系统使用) 3、对输出的进行压缩(压缩-解压的过程会消耗CPU)

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档