在热招的开发岗面试中,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 集团架构师等,集体为你送上了一份空前的大数据架构名师干货盛宴!

添加课程顾问 免费获取资料

阅读原文 精彩更多

一份 Hadoop 面试 【避坑指南】 拍了拍你!相关推荐

  1. 算法面试避坑指南,助你轻松应对Java面试

    一般来说想要成为Java开发,除了需要学习相关的技术之外,还需要学习基础知识,以便应对Java开发面试. 算法面试避坑指南五大常见算法 面试的过程其实也是一个自我认识和学习的过程,即便暂时没打算跳槽, ...

  2. Github星标百万而霸榜的大厂面试避坑指南,成功帮我规避“毁约”

    不知不觉十月已至,"金九银十"招聘旺季也快拉下帷幕! 这个时候,应届生开始集体走向社会,而职场人也迎来了跳槽涨薪的好时机. 可现实的求职情况却是一片困境:从中小微到"大厂 ...

  3. 17条避坑指南:一份来自谷歌的数据库经验贴

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://medium.com/@rak ...

  4. 凌恩生物资讯|细菌完成图,坑多专家少——请收下这份避坑指南

    尝试做细菌完成图的你是不是有很多疑问 这份避坑指南请收好! 小坑1."1 +X Contig,0 Gap"代表什么? 答:"1 Contig,0 Gap"的承诺 ...

  5. 门店管理系统怎么挑选?请收下这份避坑指南!

    有些老板可能会混淆门店运营和门店管理,其实区别很简单-- 运营门店,主要以提升销量.为门店创造利润为目的:而管理门店,侧重点在于辅助销售,让门店一切正常运行. 门店管理包含的工作有很多,比如管理门店日 ...

  6. @程序员,区块链开发平台避坑指南!

    来源 | Michiel Mulders 译者 | 火火酱 责编 | Carol 出品 | 区块链大本营(blockchain_camp) 市面上有很多不同的区块链网络,就可扩展性和功能而言,每个区块 ...

  7. 【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南

    在 windows 上安装 spark 遇到的一些坑 | 避坑指南 最近有个活:给了我一个阿里云桌面(windows 10系统),让我在上面用 scala + spark 写一些东西. 总是报错不断, ...

  8. 新媒体人必备!视频号直播避坑指南

    其中,禁言.警告都算是小惩,而封停直播一次流量就清零,被封10年.20年的视频号基本"宣判死刑". 春节即将到来(榜哥榜妹明天开始也要放假啦),在这个重要的营销节点,微信的监管力度 ...

  9. 项目从0到1避坑指南

    背景: 物流行业,老板信息化意识弱,不是现有的TMS而是一个新的方向,目前市场上竞品较少 前言: 一个项目从0到1,有相关的固定的考虑事项.然而,由于公司环境.项目涉及的行业等一些实际条件的约束,会在 ...

  10. dubbo日志关闭_不可忽视的Dubbo线程池避坑指南

    推荐阅读: 阿里巴巴4面Java岗位:算法+性能调优+并发+多线程+数据库 Dubbo+Kafka+MyBatis+reids+Spring+多线程等,学完就去面试BAT 问题描述 线上突然出现Dub ...

最新文章

  1. 两个主键怎么设置tsql_索引该怎么创建?
  2. 如何生成文件夹目录树文件
  3. 多云世界中的SD-WAN—Vecloud
  4. Java栈内存溢出代码实例
  5. WinAPI使用: 时间,线程,中断
  6. [2021-ICCV] MUSIQ Multi-scale Image Quality Transformer 论文简析
  7. 用js实现鼠标点击爱心特效
  8. 实现与优化深度神经网络
  9. resin4 发布war包
  10. Spring-web-HandlerMethodReturnValueHandler
  11. 第十二次课:Servlet实现用户管理
  12. 下载yaml appium
  13. 金蝶k3wise云服务器配置,金蝶K3WISEV15.0系统配置说明
  14. 十进制转格雷码 c语言,C语言输出格雷码
  15. 概率图模型之隐马尔可夫模型
  16. printf输出格式
  17. 工信部:将于近期发放5G商用牌照
  18. Android - 一种相似图片搜索算法的实现
  19. C++获取文件夹内子文件夹名
  20. CE修改器入门:查找多级指针

热门文章

  1. 福禄电子烟遭消费者起诉:吸完不舒服 广告与说明书自相矛盾
  2. 探探经营范围变更:新增演出经纪和电信业务
  3. 阿里确认研发车载小程序 这些功能太方便了!
  4. 美图手机官方正式告别:年中关闭手机业务 手机品牌授权给小米
  5. 苹果新闻订阅服务Apple News +推出48小时获得逾20万用户
  6. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)
  7. redis:set数据类型和操作
  8. C# CollectionBase,ICloneeable
  9. android音频测试方法,Android左右声道音频文件测试
  10. 大数据应用项目创新大赛_经济管理学院大数据应用创新大赛顺利举行