上一篇文章为大家总结了一些关于Hive的热门考点,得到了一些朋友的肯定与转发,菌菌就觉得花时间去做这些知识整合是非常有价值,有意义的一件事。本篇文章,让我们有幸一起来阅读一下,该怎么准备Hadoop的内容,才有机会在面试过程占据上风。 这是一个看着不起眼,实则“送命题”的典型。往往大家关于大数据的其他内容准备得非常充分,反倒问你什么是Hadoop却有点猝不及防,回答磕磕绊绊,给面试官的印象就很不好。另外,回答这个问题,一定要从事物本身上升到广义去介绍。面试官往往通过这个问题来判断你是否具有最基本的认知能力。 Hadoop是一个能够对大量数据进行分布式处理的软件框架。以一种可靠、高效、可伸缩的方式进行数据处理。主要包括三部分内容:Hdfs,MapReduce,Yarn Hadoop在广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如HBase,Hive,Spark,Zookeeper,Kafka,flume… 被问到也不要惊讶,面试官往往通过你对于不同技术的差异描述,就能看出你是不是真的具有很强的学习能力。 这个完全就是基于个人的经验之谈的,如果平时没有细致研究过这些,这个问题一定是答不好的。 由于Hadoop的飞速发展,功能不断更新和完善,Hadoop的版本非常多,同时也显得杂乱。目前市面上,主流的是以下几个版本: Apache 社区版本 完全开源,免费,是非商业版本。Apache社区的Hadoop版本分支较多,而且部分Hadoop存在Bug。在选择Hadoop、Hbase、Hive等时,需要考虑兼容性。同时,这个版本的Hadoop的部署对Hadoop开发人员或运维人员的技术要求比较高。 Cloudera 版本 开源,免费,有商业版和非商业版本,是在Apache社区版本的Hadoop基础上,选择相对稳定版本的Hadoop,进行开发和维护的Hadoop版本。由于此版本的Hadoop在开发过程中对其他的框架的集成进行了大量的兼容性测试,因此使用者不必考虑Hadoop、Hbase、Hive等在使用过程中版本的兼容性问题,大大节省了使用者在调试兼容性方面的时间成本。 Hortonworks 版本 的 Hadoop 开源、免费,有商业和非商业版本,其在 Apache 的基础上修改,对相关的组件或功能进行了二次开发,其中商业版本的功能是最强大,最齐全的。 所以基于以上特点进行选择,我们一般刚接触大数据用的就是CDH,在工作中大概率用 Apache 或者 Hortonworks。 一般能问出这种问题的面试官都是“狠人”,基本技术都不差,他们往往是更希望应聘者能在这些“细节”问题上脱颖而出。 Hadoop1.0由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。在Hadoop1.0中容易导致单点故障,拓展性差,性能低,支持编程模型单一的问题。 Hadoop2.0即为克服Hadoop1.0中的不足,提出了以下关键特性: 同时,新版本的Hadoop对于HDFS做了两个非常重要的增强,分别是支持异构的存储层次和通过数据节点为存储在HDFS中的数据提供内存缓冲功能 相比于Hadoop2.0,Hadoop3.0 是直接基于 JDK1.8 发布的一个新版本,同时,Hadoop3.0引入了一些重要的功能和特性 限于篇幅原因,这还都只是部分特性,大家多注意菌哥标记颜色的部分,就足以应对面试了。 Hadoop常用的端口号总共就那么几个,大家选择好记的几个就OK了 这个问题实在基础,这里也简单概述下。 在正式搭建之前,我们需要准备以下6步: 准备工作 搭建工作: 这个问题非常基础,同时出现的频率也是异常的高,但是大家也不要被HDFS的读写流程吓到。相信看到这里的朋友,应该不是第一次背HDFS读写繁多的步骤了,菌哥在这里也不建议大家去背那些文字,这里贴上两张图,大家要学会做到心中有图,万般皆易。 MapReduce数据读取并写入HDFS流程实际上是有10步 你可以这么说: 1) Map方法之后Reduce方法之前这段处理过程叫Shuffle 2) Map方法之后,数据首先进入到分区方法,把数据标记好分区,然后把数据发送到环形缓冲区;环形缓冲区默认大小100m,环形缓冲区达到80%时,进行溢写;溢写前对数据进行排序,排序按照对key的索引进行字典顺序排序,排序的手段快排;溢写产生大量溢写文件,需要对溢写文件进行归并排序;对溢写的文件也可以进行Combiner操作,前提是汇总操作,求平均值不行。最后将文件按照分区存储到磁盘,等待Reduce端拉取。 3)每个Reduce拉取Map端对应分区的数据。拉取数据后先存储到内存中,内存不够了,再存储到磁盘。拉取完所有数据后,采用归并排序将内存和磁盘中的数据都进行排序。在进入Reduce方法前,可以对数据进行分组操作。 讲到这里你可能已经口干舌燥,想缓一缓。 压缩,可以参考这张图 这里一共也有两个版本,分别是详细版和简略版,具体使用哪个还是分不同的场合。正常情况下,将简略版的回答清楚了就很OK,详细版的最多做个内容的补充: 关于Yarn的知识点考察实际上在面试中占的比重并的不多,像面试中常问的无非就Yarn的Job执行流程或者调度器的分类,答案往往也都差不多,以下回答做个参考: 1)Hadoop调度器主要分为三类: 前面刚回答完Hadoop基于压缩,小文件,IO的集群优化,现在又要回答参数优化,真的好烦啊(T▽T)如果你把自己放在实习生这个level,你 duck 不必研究这么多关于性能调优这块的内容,毕竟对于稍有工作经验的工程师来说,调优这块是非常重要的 我们常见的Hadoop参数调优有以下几种: 比如集群规模为10台时,此参数设置为60 这个完全就是基于项目经验的面试题了,暂时回答不上来的朋友可以留意一下: 我们搭建完Hadoop集群后需要对HDFS读写性能和MR计算能力测试。测试jar包在hadoop的share文件夹下。 相信被问到这里,一部分的小伙伴已经坚持不下去了 如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB)。 如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。 性能优化和数据倾斜,如果在面试前不好好准备,那就准备在面试时吃亏吧~其实掌握得多了,很多方法都有相通的地方。下面贴出一种靠谱的回答,大家可以借鉴下: 1)提前在map进行combine,减少传输的数据量 在Mapper加上combiner相当于提前进行reduce,即把一个Mapper中的相同key进行了聚合,减少shuffle过程中传输的数据量,以及Reducer端的计算量。 如果导致数据倾斜的key 大量分布在不同的mapper的时候,这种方法就不是很有效了 2)数据倾斜的key 大量分布在不同的mapper 在这种情况,大致有如下几种方法: 第一次在map阶段对那些导致了数据倾斜的key 加上1到n的随机前缀,这样本来相同的key 也会被分到多个Reducer 中进行局部聚合,数量就会大大降低。 第二次mapreduce,去掉key的随机前缀,进行全局聚合。 思想:二次mr,第一次将key随机散列到不同 reducer 进行处理达到负载均衡目的。第二次再根据去掉key的随机前缀,按原key进行reduce处理。 这个方法进行两次mapreduce,性能稍差。 根据数据分布情况,自定义散列函数,将key均匀分配到不同Reducer 为了能鼓励大家多学会总结,菌在这里贴上自己平时做的思维导图,需要的朋友,可以关注博主个人微信公众号【猿人菌】,后台回复“思维导图”即可获取。 很高兴能看到这里的朋友,有任何好的想法或者建议都可以在评论区留言,或者直接私信我也ok,后期会考虑出一些大数据面试的场景题,在最美的年华,做最好的自己,我是00后Alice,我们下一期见~~ 一键三连,养成习惯~ 文章持续更新,可以微信搜一搜「 猿人菌 」第一时间阅读,思维导图,大数据书籍,大数据高频面试题,海量一线大厂面经…期待您的关注!
一、什么是Hadoop?
二、能跟我介绍下Hadoop和Spark的差异吗?
Hadoop
Spark
类型
基础平台,包含计算,存储,调度
分布式计算工具
场景
大规模数据集上的批处理
迭代计算,交互式计算,流计算
价格
对机器要求低,便宜
对内存有要求,相对较贵
编程范式
MapReduce,API 较为底层,算法适应性差
RDD组成DAG有向无环图,API较为顶层,方便使用
数据存储结构
MapReduce中间计算结果存在HDFS磁盘上,延迟大
RDD中间运算结果存在内存中,延迟小
运行方式
Task以进程方式维护,任务启动慢
Task以线程方式维护,任务启动快
三、Hadoop常见的版本有哪些,分别有哪些特点,你一般是如何进行选择的?
四、能简单介绍Hadoop1.0,2.0,3.0的区别吗?
五、说下Hadoop常用的端口号
六、简单介绍一下搭建Hadoop集群的流程
七、介绍一下HDFS读写流程
八、介绍一下MapReduce的Shuffle过程,并给出Hadoop优化的方案(包括:压缩、小文件、集群的优化)
其中最重要,也是最不好讲的就是 shuffle 阶段,当面试官着重要求你介绍 Shuffle 阶段时,可就不能像上边图上写的那样简单去介绍了。
但面试官可能对你非常欣赏:
小伙几,看来你对MapReduce的Shuffle阶段掌握很透彻啊,那你跟我再介绍一下你是如何基于MapReduce做Hadoop的优化的,可以给你个提示,可以从压缩,小文件,集群优化层面去考虑哦~
可能你心里仿佛有一万只草泥马在奔腾,但是为了顺利拿下本轮面试,你还是不得不开始思考,如何回答比较好:1)HDFS小文件影响
2)数据输入小文件处理
3)Map阶段
4)Reduce阶段
slowstart.completedmaps
参数,使Map运行到一定程度后,Reduce也开始运行,减少Reduce的等待时间5) IO 传输
6) 整体
7) 压缩
提示:如果面试过程问起,我们一般回答压缩方式为Snappy,特点速度快,缺点无法切分(可以回答在链式MR中,Reduce端输出使用bzip2压缩,以便后续的map任务对数据进行split)九、介绍一下 Yarn 的 Job 提交流程
其中简略版对应的步骤分别如下:
十、介绍下Yarn默认的调度器,调度器分类,以及它们之间的区别
十一、了解过哪些Hadoop的参数优化
dfs.namenode.handler.count=20 * log2(Cluster Size)
十二、了解过Hadoop的基准测试吗?
十三、你是怎么处理Hadoop宕机的问题的?
但言归正传,被问到了,我们总不能说俺不知道,洒家不会之类的吧٩(๑❛ᴗ❛๑)۶下面展示一种回答,给大家来个Demo。十四、你是如何解决Hadoop数据倾斜的问题的,能举个例子吗?
JobConf.setNumReduceTasks(int)
彩蛋
结语
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算