在大数据开发岗位的需求下,工资待遇水涨船高,不少编程人员在面对职业瓶颈期的时候,会选择转编程方向发展。
在热招的开发岗面试中,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 的工作压榨的没时间学习,就算下了班也只想舒服地“北京瘫”一会儿。再者,书中讲的知识固然权威,但纸上得来终觉浅,缺乏真实案例讲解让很多小伙伴在学习的过程中深刻体会到了困难重重。
那么,对于这样有自学困难的同学来说,什么样的学习技巧最实用?当然是跟着大佬学呀。但有人会问,“什么样的大佬愿意教我呢?” “大佬又能在什么时间教我呢?”