大数据开发面试题及答案(企业实战版).docxVIP

大数据开发面试题及答案(企业实战版).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

大数据开发面试题及答案(企业实战版)

一、基础核心题(Hadoop/Spark)

1.问题:HDFS的NameNode和DataNode作用是什么?实际部署中怎么避免NameNode单点故障?

答案:NameNode是HDFS的“大脑”,负责管理文件元数据(文件名、路径、块分布、权限),不存实际数据;DataNode是“存储节点”,负责存储数据块,同时响应NameNode的读写指令、汇报块状态。

实际部署避免单点故障:①主从架构:部署1个ActiveNameNode+1个StandbyNameNode(共享JournalNode集群同步元数据);②本地备份:ActiveNameNode定期将edits日志和fsimage备份到本地磁盘+远程备份;③监控告警:通过Zabbix或Prometheus监控NameNode状态,Standby异常时自动切换(依赖ZooKeeper)。

2.问题:Spark的RDD和DataFrame区别?什么时候用DataFrame而不是RDD?

答案:RDD是弹性分布式数据集,是Spark的底层抽象,以Java/Scala对象形式存储,支持细粒度的算子操作(如map、filter),但无schema约束、不支持优化;DataFrame是带schema的分布式数据集(类似数据库表),存储的是Row对象,内置Catalyst优化器,能自动优化执行计划(如谓词下推、列裁剪)。

优先用DataFrame的场景:①数据有明确结构(如JSON、CSV、数据库表);②需执行复杂查询(join、groupby、聚合),追求性能优化;③处理大规模数据(DataFrame序列化效率比RDD高,占用内存少);RDD适合:①无结构化数据处理(如文本清洗);②需自定义复杂逻辑(如自定义对象转换)。

3.问题:MapReduce的shuffle过程是什么?怎么优化shuffle性能?

答案:shuffle是MapReduce的核心,本质是“将Map输出按key重新分区、排序后分发到Reduce”的过程,步骤:①Map端:数据处理后写入环形缓冲区,满了溢写到磁盘(溢写前排序、合并小文件);②合并阶段:将多个溢写文件合并成大文件(保持排序);③Reduce端:通过HTTP拉取对应分区的数据,再次合并排序,最后交给Reduce处理。

优化方案:①增大环形缓冲区大小(默认100MB,可调整为200-500MB,减少溢写次数);②启用压缩(对溢写文件和最终输出压缩,用Snappy或LZO格式,平衡压缩速度和比率);③调整分区数(默认和Reduce数一致,建议设为Reduce数的1.5-2倍,避免数据倾斜);④避免大量小文件(提前合并输入文件,减少Map任务数)。

二、数据建模与数仓题

4.问题:什么是维度建模?星型模型和雪花模型的区别?实际数仓中更常用哪种?

答案:维度建模是面向业务的建模方法,核心是“以事实表为中心,围绕维度表组织数据”,目的是简化查询、提高分析效率。

星型模型:事实表(存储业务指标,如订单金额、销量)直接关联所有维度表(如用户、商品、时间),维度表不冗余、不关联其他维度表,结构简单;

雪花模型:维度表会进一步拆分(如“地址维度表”拆分为“省份表”“城市表”“区县表”),维度表之间有层级关联,数据冗余少但查询时需多表join;

实际数仓常用星型模型:原因是查询效率高(减少join次数),维护成本低,适合大数据场景下的快速分析;雪花模型仅在数据冗余要求极高(如存储成本敏感)时使用,但会牺牲查询性能。

5.问题:数仓分层(ODS、DWD、DWS、ADS)的作用是什么?各层数据怎么设计?

答案:数仓分层的核心是“解耦、复用、优化性能”,避免直接操作原始数据,各层设计:

ODS层(操作数据存储层):存储原始数据(如日志、数据库同步数据),不做清洗,仅保留原始格式(如JSON日志、MySQL全量/增量同步数据),目的是还原数据源,支持数据回溯;

DWD层(数据明细层):对ODS层数据清洗(去重、补缺失值、格式转换)、脱敏(如手机号脱敏)、拆分(如将复杂字段拆分为单独字段),产出明细数据(如订单明细、用户行为明细),是数仓的基础;

DWS层(数据汇总层):按业务主题汇总(如用户、商品、订单),计算轻度聚合指标(如用户日活跃、商品周销量),目的是复用汇总结果,减少下游重复计算;

ADS层(应用数据层):面向具体业务场景(如报表、dashboar

您可能关注的文档

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档