前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据之Hadoop面试官的11个灵魂拷问!

大数据之Hadoop面试官的11个灵魂拷问!

作者头像
刘浩的BigDataPath
发布2021-04-13 11:50:33
3830
发布2021-04-13 11:50:33
举报
文章被收录于专栏:大数据那些年大数据那些年

久违了各位,好长时间没更新了,博主也是有点懒!!!

今天就给各位更新一些Hadoop高端面试题,也是博主这一年面试所遇到的问题,其中还包括一些大厂的面试真题! 注:喜欢的朋友们给个关注,一键三连一下吧! 谢谢

1、先说一下hadoop的组成结构把!

1.HDFS 管理者:namenode 工作者:DataNode 辅助管理者:secondaryNameNode 2.MapReduce 3.YARN 管理者:ResourceManage 工作者:NodeManage

2、常用的端口号有哪些?

dfs.namenode.http-address:50070 dfs.datanode.http-address:50075 SecondaryNameNode:50090 dfs.datanode.address:50010 fs.defaultFS:8020或者9000 yarn.resourcemanager.webapp.address:8088 历史服务器web访问端口:19888

3、HDFS读写流程说一下?

读流程

1、客户端会先带着读取路径向NameNode发送读取请求 2、NameNode接收到请求后,会先判断是否有权限,读取文件是否存在等等,如果都无误则将文件所在的DataNode的节点位置,发送给客户端部分或者全部的DataNode的节点位置 3、客户端得到文件块存储的位置后,会调用read()方法,去读取数据 4、在读取之前会先进行一个checksum的操作,去判断一下校验和是否正确,正确则读,不正确则去下一个存放该block块的DataNode节点上读取 5、读取完NameNode这次发送过来的所有的block块后,会再去询问是否还有block块,如果有则接着读取,如果没有则调用close方法,将读取到的文件合并成一个大文件

注:结合下图更容易通透了解读操作的流程

图1
图1
写流程

1.客户端会带着文件路径向NameNode发送写入请求 2.NameNode会去判断是否有权限,写入路径的父级目录是否存在,如都无误则发送可以写入的请求返回给客户端 3.客户端会将文件进行切分,然后上传block 4.NameNode会根据DataNode的存储空间还有机架感知原理等返回该block块将要存储的DataNode的位置 ABC 5.客户端会去ABC三个DataNode节点上建立pipeline A-B B-C然后C建立完成后会将结果返回给B B返回给A A返回给客户端 6.开始往A写入 依次进行流水线的复制 7.写入完后再去依次写入其他block块 8.都写入完成后会将写入完成的信息返回给NameNode 9.NameNode存储该文件的各个block块的元数据信息

注:结合下图更容易通透了解写操作的流程

在这里插入图片描述
在这里插入图片描述

4、你说你深刻理解MR的工作流程,你给我讲一下吧!

1.在客户端执行submit()方法之前,会先去获取一下待读取文件的信息 2.将job提交给yarn,这时候会带着三个信息过去(job.split(文件的切片信息),jar.job.xml) 3.yarn会根据文件的切片信息去计算将要启动的maptask的数量,然后去启动maptask 4.maptask会调用InPutFormat()方法区HDFS上面读取文件,InPutFormat()方法会再去调用RecordRead()方法,将数据以行首字母的偏移量为key,一行数据为value传给mapper()方法 5.mapper方法做一些逻辑处理后,将数据传到分区方法中,对数据进行一个分区标注后,发送到环形缓冲区中 6.环形缓冲区默认的大小是100M,达到80%的阈值将会溢写 7.在溢写之前会做一个排序的动作,排序的规则是按照key进行字典序排序,排序的手段是快排 8.溢写会产生出大量的溢写文件,会再次调用merge()方法,使用归并排序,默认10个溢写文件合并成一个大文件, 9.也可以对溢写文件做一次localReduce也就是combiner的操作,但前提是combiner的结果不能对最终的结果有影响 10.等待所有的maptask结束之后,会启动一定数量的reducetask 11.reducetask会发取拉取线程到map端拉取数据,拉取到的数据会先加载到内存中,内存不够会写到磁盘里,等待所有的数据拉取完毕,会将这些输出在进行一次归并排序 12.归并后的文件会再次进行一次分组的操作,然后将数据以组为单位发送到reduce()方法 13.reduce方法做一些逻辑判断后,最终调用OutputFormat()方法,Outputformat()会再去调用RecordWrite()方法将数据以KV的形式写出到HDFS上

5、MapReduce的Shuffle过程说一下!

Map方法之后Reduce方法之前这段处理过程叫「Shuffle」

1、Map方法之后,数据首先进入到分区方法,把数据标记好分区,然后把数据发送到环形缓冲区; 2、环形缓冲区默认大小100m,环形缓冲区达到80%时,进行溢写; 3、溢写前对数据进行排序,排序按照对key的索引进行字典顺序排序,排序的手段「快排」; 4、溢写产生大量溢写文件,需要对溢写文件进行「归并排序」; 5、对溢写的文件也可以进行Combiner操作,前提是汇总操作,求平均值不行。最后将文件按照分区存储到磁盘,等待Reduce端拉取。 6、每个Reduce拉取Map端对应分区的数据。拉取数据后先存储到内存中,内存不够了,再存储到磁盘。 7、拉取完所有数据后,采用归并排序将内存和磁盘中的数据都进行排序。在进入Reduce方法前,可以对数据进行分组操作。

5、Yarn默认的调度器了解多少?

1、FIFO Scheduler:先进先出调度器:优先提交的,优先执行,后面提交的等待【生产环境不会使用】 2、Capacity Scheduler:容量调度器:允许看创建多个任务对列,多个任务对列可以同时执行。但是一个队列内部还是先进先出。【Hadoop2.7.2默认的调度器】 3、Fair Scheduler:公平调度器:第一个程序在启动时可以占用其他队列的资源(100%占用),当其他队列有任务提交时,占用资源的队列需要将资源还给该任务。还资源的时候,效率比较慢。【CDH版本的yarn调度器默认】

6、Hadoop的基准测试你做过吗?

对HDFS读写性能和MR计算能力测试。 测试jar包在hadoop的share文件夹下。

7、碰见Hadoop宕机的问题你是怎么处理的?

1、 如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。 2、调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB) 3、 如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。 4、高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。

8、碰见MR的数据倾斜你是怎么处理的?

1、提前在map进行combine,减少传输的数据量 2、数据倾斜的key 大量分布在不同的mapper 2.1「局部聚合加全局聚合」 二次mr,第一次将key随机散列到不同 reducer进行处理达到负载均衡目的。第二次再根据去掉key的随机前缀,按原key进行reduce处理。 这个方法进行两次mapreduce,性能稍差 2.2「增加Reducer,提升并行度」 (JobConf.setNumReduceTasks(int)) 2.3「实现自定义分区」 根据数据分布情况,自定义散列函数,将key均匀分配到不同Reducer

9、mapreduce为什么分两部分,为什么不直接map或直接reduce?

是为了实现分布式计算,提高计算效率。 很多情况下都是需要对整个数据集进行计算操作,单单的分成每个单独的小部分虽然能提高计算效率,但是导致无法完成实际需求,是没有任何意义的, 所以添加一个reduce阶段,负责将分成多个部分计算的结果汇总进行处理,使得更加能满足一般需求。

10、小文件对HDFS的影响有哪些,你是怎么去处理小文件的?

1、HDFS小文件影响 影响NameNode的寿命,因为文件元数据存储在NameNode的内存中 影响计算引擎的任务数量,比如每个小的文件都会生成一个Map任务 2、数据输入小文件处理 2.1合并小文件:对小文件进行归档(Har)、自定义Inputformat将小文件存储成SequenceFile文件。 2.2 采用ConbinFileInputFormat来作为输入,解决输入端大量小文件场景 2.3对于大量小文件Job,可以开启JVM重用

11、你对Hadoop熟吗?

接下来还有很多大数据组件的灵魂拷问 准备好了吗?各位小伙伴们!!! 咱们下期再见!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、先说一下hadoop的组成结构把!
  • 2、常用的端口号有哪些?
  • 3、HDFS读写流程说一下?
  • 4、你说你深刻理解MR的工作流程,你给我讲一下吧!
  • 5、MapReduce的Shuffle过程说一下!
  • 5、Yarn默认的调度器了解多少?
  • 6、Hadoop的基准测试你做过吗?
  • 7、碰见Hadoop宕机的问题你是怎么处理的?
  • 8、碰见MR的数据倾斜你是怎么处理的?
  • 9、mapreduce为什么分两部分,为什么不直接map或直接reduce?
  • 10、小文件对HDFS的影响有哪些,你是怎么去处理小文件的?
  • 11、你对Hadoop熟吗?
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档