Hadoop高频面试题(建议收藏)

   


一、什么是Hadoop/h2>

这是一个看着不起眼,实则“送命题”的典型。往往大家关于大数据的其他内容准备得非常充分,反倒问你什么是Hadoop却有点猝不及防,回答磕磕绊绊,给面试官的印象就很不好。另外,回答这个问题,一定要从事物本身上升到广义去介绍。面试官往往通过这个问题来判断你是否具有最基本的认知能力。

Hadoop是一个能够对大量数据进行分布式处理的软件框架。以一种可靠、高效、可伸缩的方式进行数据处理。主要包括三部分内容:Hdfs,MapReduce,Yarn

Hadoop在广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如HBase,Hive,Spark,Zookeeper,Kafka,flume….

  • HDFS写数据流程

    你可以这么说:

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

    2. Map方法之后,数据首先进入到分区方法,把数据标记好分区,然后把数据发送到环形缓冲区;环形缓冲区默认大小100m,环形缓冲区达到80%时,进行溢写;溢写前对数据进行排序,排序按照对key的索引进行字典顺序排序,排序的手段「快排」;溢写产生大量溢写文件,需要对溢写文件进行「归并排序」;对溢写的文件也可以进行Combiner操作,前提是汇总操作,求平均值不行。最后将文件按照分区存储到磁盘,等待Reduce端拉取。

    3)每个Reduce拉取Map端对应分区的数据。拉取数据后先存储到内存中,内存不够了,再存储到磁盘。拉取完所有数据后,采用归并排序将内存和磁盘中的数据都进行排序。在进入Reduce方法前,可以对数据进行分组操作。

    ?

    「讲到这里你可能已经口干舌燥,想缓一缓。但面试官可能对你非常欣赏:」「小伙几,看来你对MapReduce的Shuffle阶段掌握很透彻啊,那你跟我再介绍一下你是如何基于MapReduce做Hadoop的优化的,可以给你个提示,可以从压缩,小文件,集群优化层面去考虑哦~」

    九、介绍一下 Yarn 的 Job 提交流程

    这里一共也有两个版本,分别是详细版和简略版,具体使用哪个还是分不同的场合。正常情况下,将简略版的回答清楚了就很OK,详细版的最多做个内容的补充:

    • 详细版

      1. client向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等

      2. ResourceManager启动一个container用于运行ApplicationMaster

      3. 启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳

      4. ApplicationMaster向ResourceManager发送请求,申请相应数目的container

      5. 申请成功的container,由ApplicationMaster进行初始化。container的启动信息初始化后,AM与对应的NodeManager通信,要求NM启动container

      6. NM启动container

      7. container运行期间,ApplicationMaster对container进行监控。container通过RPC协议向对应的AM汇 自己的进度和状态等信息

      8. 应用运行结束后,ApplicationMaster向ResourceManager注销自己,并允许属于它的container被收回

      十、介绍下Yarn默认的调度器,调度器分类,以及它们之间的区别

      关于Yarn的知识点考察实际上在面试中占的比重并的不多,像面试中常问的无非就Yarn的Job执行流程或者调度器的分类,答案往往也都差不多,以下回答做个参考:

      1)Hadoop调度器主要分为三类:

      • FIFO Scheduler:先进先出调度器:优先提交的,优先执行,后面提交的等待【生产环境不会使用】

      • Capacity Scheduler:容量调度器:允许看创建多个任务对列,多个任务对列可以同时执行。但是一个队列内部还是先进先出。【Hadoop2.7.2默认的调度器】

      • Fair Scheduler:公平调度器:第一个程序在启动时可以占用其他队列的资源(100%占用),当其他队列有任务提交时,占用资源的队列需要将资源还给该任务。还资源的时候,效率比较慢。【CDH版本的yarn调度器默认】

      十一、了解过哪些Hadoop的参数优化

      前面刚回答完Hadoop基于压缩,小文件,IO的集群优化,现在又要回答参数优化,真的好烦啊(T▽T)如果你把自己放在实习生这个level,你 duck 不必研究这么多关于性能调优这块的内容,毕竟对于稍有工作经验的工程师来说,调优这块是非常重要的

      我们常见的「Hadoop参数调优」有以下几种:

      • 在hdfs-site.xml文件中配置多目录,最好提前配置好,否则更改目录需要重新启动集群

      • NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作

      比如集群规模为10台时,此参数设置为60

      • 服务器节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量

      • 单个任务可申请的最多物理内存量,默认是8192(MB)

      十二、了解过Hadoop的基准测试吗/h2>

      这个完全就是基于项目经验的面试题了,暂时回答不上来的朋友可以留意一下:

      我们搭建完Hadoop集群后需要对HDFS读写性能和MR计算能力测试。测试jar包在hadoop的share文件夹下。

      十三、你是怎么处理Hadoop宕机的问题的/h2>

      相信被问到这里,一部分的小伙伴已经坚持不下去了

      文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91301 人正在系统学习中

      声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月20日
下一篇 2020年9月20日

相关推荐