大数据常见面试题及答案(实战版).docx

大数据常见面试题及答案(实战版).docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

大数据常见面试题及答案(实战版)

一、Hadoop生态基础

问:NameNode和DataNode的核心作用,以及NameNode如何避免单点故障?

答:NameNode相当于“文件目录管理员”,只存元数据(文件名、路径、块分布),不存实际数据;DataNode是“数据存储节点”,负责存具体数据块(默认128MB),并定期向NameNode汇报心跳。

单点故障靠HA(高可用)解决:部署两个NameNode(Active+Standby),用JournalNode集群同步元数据日志(edits文件),当Active挂了,ZooKeeper会触发Failover,Standby无缝切换成Active,实际项目里还会配Fencing防止“脑裂”。

问:MapReduce的Shuffle过程是怎样的?实际优化时会注意哪些点?

答:Shuffle是“从Map输出到Reduce输入的中间过程”,分三步:

①Map端:输出先写环形缓冲区(默认100MB,80%时溢写),溢写前会按Key排序、分区;

②溢写文件合并:多个溢写文件合并成大文件,期间会做排序和Combiner(预聚合,减少数据量);

③Reduce端:拉取(Fetch)属于自己分区的数据,再合并、排序,最后给Reduce处理。

优化点:调大环形缓冲区(减少溢写次数)、用Combiner(比如统计PV时先在Map端聚合)、设置合理的Reduce数(一般是集群CPU核数的1.5-2倍,避免太少导致数据倾斜,太多浪费资源)。

二、Spark核心与实操

问:RDD、DataFrame、DataSet的区别,实际项目中怎么选?

答:三者都是Spark的分布式数据集,核心区别在“数据结构”和“优化能力”:

RDD:无结构化(只存对象),无Schema,不支持SQL,适合底层操作(比如自定义算法);

DataFrame:有结构化Schema(像数据库表),支持SQL和Catalyst优化,但类型不安全(编译时不检查类型);

DataSet:结合两者优点,有Schema且类型安全,编译时能查错,还支持面向对象操作。

实际选:做简单数据清洗、SQL分析用DataFrame(快);复杂业务逻辑(比如需强类型校验)用DataSet;写自定义算子(比如机器学习特征工程)用RDD。之前做电商用户画像,用DataSet处理用户行为数据,能提前发现类型错误,避免线上出问题。

问:Spark遇到数据倾斜怎么办?举个你处理过的例子。

答:数据倾斜本质是“某几个Key的数据量远超其他Key,导致对应Task卡壳”,一般分三步解决:

①先定位倾斜Key:用countByKey()看各Key的数量,或在SparkUI的Stage页面看Task运行时间(倾斜的Task会跑很久);

②处理方案:

小表广播:如果是Join倾斜,且其中一张表很小(比如100MB以内),用broadcast()广播小表,避免Shuffle;

Key拆分:比如倾斜Key是“null”,把它拆成“null_1”“null_2”…多个子Key,和另一张表的对应Key也拆分后Join,最后合并;

例子:之前做日志分析,某接口的错误日志Key(“error_500”)占比80%,导致ReduceTask卡了1小时,后来把这个Key拆成10个(“error_500_01”到“error_500_10”),对应的数据也拆分,最后Reduce跑了5分钟就结束了。

三、数据仓库与同步

问:星型模型和雪花模型的区别,OLAP场景选哪个?

答:都是数据仓库的表结构设计:

星型模型:中心是事实表(比如订单表,存交易金额、数量),周围是维度表(用户、商品、时间,直接关联事实表),维度表不关联其他维度表,优点是查询快、易理解;

雪花模型:维度表会再拆分(比如商品维度表拆成“商品表”和“品牌表”,品牌表再关联商品表),优点是省存储,但查询要多表Join,速度慢。

OLAP场景(比如报表分析、多维度钻取)肯定选星型模型,因为OLAP看重查询效率,比如电商的“月度各品类销售额”报表,星型模型直接用“订单事实表+商品维度表+时间维度表”Join,比雪花模型快很多。

问:Sqoop和FlinkCDC都能同步数据,怎么选?

答:核心看“同步场景是离线还是实时”:

Sqoop:适合离线批量同步(比如每天凌晨同步昨天的MySQL数据到HDFS),原理是通过JDBC连接源库,批

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档