在热招的开发岗面试中,Hadoop、HDFS 题被面试官选中的几率非常大,也是 HR 的杀手锏之一,常会被问的有以下几种面试题:
1. HDFS 的架构设计是怎样的?
2. HDFS 的读写流程是怎样的?
3. MapReduce 计算引擎中的 shuffle 是怎样的?
4. 简要描述 Hadoop 跟 Spark 的区别。
多数人其实凭借平时工作对海量数据处理的经验,觉得这种面试题完全就是小case,不假思索就快速给出了答案:
1. HDFS 是一个主从架构。从节点负责分摊集群的工作,主节点负责进行从节点的管理。
2. HDFS 中默认文件中的而每个数据块写入三个副本,写入过程是客户端把第一个副本写到第一个节点,再由第一个节点写到第二个节点,再由第二个节点写到第三个节点。
3. MapReduce 的 shuffle 过程是:mapper 阶段的输出结果,根据分区规则把结果数据通过网络传输到第二个阶段,也就是 reducer 阶段。
4. Hadoop 提供分布式的存储和结算解决方案,但是 Spark 就提供了计算解决方案,所以说 Spark 替代 Hadoop 是不可能的。
但大家是否想过,这样看似“突出要点式”的简短回答,有没有不知不觉正中了面试官下怀?我们来分析一下这几个回答究竟踩中了哪些“坑”?
1. 回答太过于简洁,而且不完整,明显感觉不全面,欠思考;
2. 回答不够细致,因为有些时候,面试官问的某些问题并不是他真正的问题,而是这个问题所延伸出来的问题。比如问你 HDFS 的读写流程,其实更多的是想知道 HDFS 到底怎么确保一个文件,完好无损的写入 HDFS,还要保证高效率、以及容错相关的事儿;
3. MapReduce 框架的核心部分,就是 Mapper 和 Reducer 之间的 shuffle 过程。Shuffle 过程非常复杂,既然面试官问你,肯定是想让你更清楚详尽的去描述这个过程,考察你对于知识深度的掌握情况。
那么,避免陷入雷区,到底什么样的回答才接近满分?别着急,我来先给大家做个正确示范。
问题:MapReduce 的 shuffle 过程是怎样的?
示范如下:
1. Mapper 阶段做完数据的计算之后,会对该阶段输出的每个 key-value 进行 partition 分区计算。
2. 把分区后的 key-value 写入到默认大小为 100M 的环形缓冲内存区中;
3. 当该环形缓冲区的写入的数据总量达到 80% 的阈值的时候,就会执行 Spill 溢写磁盘操作;
4. 在该操作之前,会调用 Sort 针对该 80% 的缓冲数据进行按照 key 排序;
5. 然后 Mapper 阶段的每个 Task 都有可能在执行过程中,输出多个按照 key 排序的中间结果文件,为了保证 reducer 阶段能拿到排序好的数据,这些溢写出来的磁盘文件,还会进行合并操作。最终每个 MapTask 都生成一个结果文件和一个索引文件。将来 Reducer 阶段的 ReduceTask 就会先读取索引文件,然后从结果文件中拉取自己这个 Task 需要的数据;
6. 在输出的过程中,如果用户有设置 Combiner 组件,那么还会调用 Combiner 进行局部聚合操作,以减轻 shuffle 过程中网络负载的压力;
7. 当一个 Reducer 启动运行之后,就开始从 MapTask 拉取数据。拉取过来的数据先放在内存中。如果该内存放不下,同样也会进行溢写操作,在溢写的过程中,也会进行排序;
8. 最后,每个 ReduceTask 其实都拉取到自己应该处理的数据之后,生成一个输入文件。ReduceTask 在执行的时候,就扫描这个文件,按照 key 一组一组的执行逻辑处理;
9. Reducer 数据结果。
你看,这样的回答,是不是就更为全面了?相对更详尽完善的答案是完全能让面试官眼前一亮的,这样就离拿到offer大大迈进了一步。其实,为了更加全面掌握 Hadoop 的底层原理,可以拓展一些相关阅读。我给大家推荐几本书:
《Hadoop 技术内幕》
《Hadoop:The Difinitive Guide》
《Hadoop技术内幕:深入解析 YARN 架构设计与实现原理》
《Hadoop技术内幕:深入解析 MapReduce 架构设计与实现原理》
看到这儿,程序员们该摸着厚如搬砖的资料犯难了,平日被 996 的工作压榨的没时间学习,就算下了班也只想舒服地“北京瘫”一会儿。再者,书中讲的知识固然权威,但纸上得来终觉浅,缺乏真实案例讲解让很多小伙伴在学习的过程中深刻体会到了困难重重。
那么,对于这样有自学困难的同学来说,什么样的学习技巧最实用?当然是跟着大佬学呀。但有人会问,“什么样的大佬愿意教我呢?” “大佬又能在什么时间教我呢?”
别急,这儿正好有个 《3天手写一个 Hadoop 框架》免费训练营 的机会拍了拍懵懂的你! 你没看错!免费! 3天,让你轻松掌握海量数据的处理思路!3天,让你玩转分布式系统引导的痛点 & 难点!
本次训练营由哪位大佬坐阵?
除了大神马老师,更有前 58 集团技术委员会主席、前转转公司首席架构师——孙玄,携手前转转公司大数据平台负责人——李希沅参与课程打磨,用 3 天沉浸式 Hadoop 训练营大课,与 4000 人彻夜拿下 62 个面试涨薪技能点!给大家先预览一波干货满满的课程大纲,下方高能:⬇️
添加课程顾问 获取听课地址
除了一次魔鬼训练营就完事儿么?
还有一大波福利等大家领!奈学教育,端午期间,豪礼放送!
这套视频课程,详细讲解了【Kafka 源码】、【大数据中台】、【企业级大数据平台搭建】等各类干货!原价 2699 元的资料包,现在免费送!(篇幅有限,截取部分以供预览)
除此之外,讲师集群需要用到的各种程序进行了打包,根据视频教学内容可以让你轻松搭建完全分布式环境,像在企业生产环境一样进行学习和实践!
包揽 BAT 行业大数据、编程架构各品目技术大咖,集合了前腾讯运营总监、前百度资深开发工程师、前微软商业管理解决方案专家、前 58 集团架构师等,集体为你送上了一份空前的大数据架构名师干货盛宴!
添加课程顾问 免费获取资料
阅读原文 精彩更多