大家好,我是蓦然

原文链接如下:

​大数据面试题V2.0,641页,39w字面试题来源:牛客网大数据面经,从约500篇面经选取。大数据面试题V2.0,641页,39w字,来源:牛客网大数据面经_大数据开发

大数据面试题V2.0主要是从牛客上摘取一些别人分享的大数据面试题,然后给出一些参考答案,这件事还是一直都在坚持,从牛客上pa数据,然后被封号,然后再接再厉,最近终于完成了。

后续会不断更新答案~~~~

大数据面试题V2.0共401道题,641页,近39w字,图片数量就没计算了,有的题目就是展开来概述了,所以不小心就页数有点超标,初稿刚出来时预计是300-400页。

下面大概介绍下这版面试题的大概内容,主要分为以下几部分:

Hadoop面试题:80道

Zookeeper面试题:20道

Hive面试题:29道

Flume面试题:9道

Kafka面试题:51到

HBase面试题:33道

Spark面试题:81道

Flink面试题:27道

数仓面试题:21道

综合面试题:32道

数据库(MySQL)面试题:18道

总共401道题

一、Hadoop面试题

1、Hadoop基础

​介绍下Hadoop​

Hadoop的特点

说下Hadoop生态圈组件及其作用

​Hadoop主要分哪几个部分?他们有什么作用?​

Hadoop1x,2x,3x的区别

Hadoop集群工作时启动哪些进程?它们有什么作用?

搭建Hadoop集群的xml文件有哪些?

Hadoop的checkpoint流程

Hadoop的默认块大小是多少?为什么要设置这么大?

Block划分的原因

Hadoop常见的压缩算法?

Hadoop作业提交到YARN的流程?

Hadoop的Combiner的作用

Hadoop序列化和反序列化

Hadoop的运行模式

Hadoop小文件处理问题

2、HDFS部分

HDFS文件写入和读取流程

HDFS组成架构

介绍下HDFS,说下HDFS优缺点,以及使用场景

HDFS作用

HDFS的容错机制

HDFS的存储机制

HDFS的副本机制

HDFS的常见数据格式,列式存储格式和行存储格式异同点,列式存储优点有哪些?

HDFS如何保证数据不丢失?

HDFS NameNode高可用如何实现?需要哪些角色?

HDFS的文件结构?

HDFS的默认副本数?为什么是这个数量?如果想修改副本数怎么修改?

介绍下HDFS的Block

HDFS的块默认大小,64M和128M是在哪个版本更换的?怎么修改默认块大小?

HDFS的block为什么是128M?增大或减小有什么影响?

HDFS HA怎么实现?是个什么架构?

导入大文件到HDFS时如何自定义分片?

HDFS的mapper和reducer的个数如何确定?reducer的个数依据是什么?

HDSF通过哪个中间组件去存储数据

HDFS跨节点怎么进行数据迁移

HDFS的数据一致性靠什么保证?

HDFS怎么保证数据安全

HDFS中向DataNode写数据失败了怎么办

Hadoop2.xHDFS快照

3、MapReduce部分

介绍下MapReduce

MapReduce优缺点

MapReduce架构

MapReduce工作原理

MapReduce哪个阶段最费时间

MapReduce中的Combine是干嘛的?有什么好处?

MapReduce为什么一定要有环型缓冲区

MapReduce为什么一定要有Shuffle过程

MapReduce的Shuffle过程及其优化

MapReduce Shuffle的排序算法

MapReduce的数据处理过程

Map join的原理(实现)?应用场景?

Reduce join如何执行(原理)

MapReduce为什么不能产生过多小文件

MapReduce分区及作用

Map的分片有多大

MapReduce join两个表的流程?

手撕一段简单的MapReduce程序

reduce任务什么时候开始?

MapReduce的reduce使用的是什么排序?

MapReduce怎么确定MapTask的数量?

MapReduce的map进程和reducer进程的jvm垃圾回收器怎么选择可以提高吞吐量?

MapReduce的task数目划分

MapReduce作业执行的过程中,中间的数据会存在什么地方?不会存在内存中么?

Mapper端进行combiner之后,除了速度会提升,那从Mapper端到Reduece端的数据量会怎么变?

map输出的数据如何超出它的小文件内存之后,是落地到磁盘还是落地到HDFS中?

Map到Reduce默认的分区机制是什么?

结合wordcount述说MapReduce,具体各个流程,map怎么做,reduce怎么做

MapReduce数据倾斜产生的原因及其解决方案

MapReduce运行过程中会发生OOM,OOM发生的位置?

MapReduce用了几次排序,分别是什么?

MapReduce压缩方式

MapReduce中怎么处理一个大文件

4、YARN部分

介绍下YARN

YARN有什么优势,能解决什么问题?

YARN容错机制

YARN高可用

YARN调度器

YARN中Container是如何启动的?

YARN的改进之处,Hadoop3.x相对于Hadoop2.x?

YARN监控

二、Zookeeper面试题

介绍下Zookeeper是什么?

Zookeeper有什么作用?优缺点?有什么应用场景?

Zookeeper的选举策略,leader和follower的区别?

Zookeeper的节点类型有哪些?分别作用是什么?

Zookeeper的节点数怎么设置比较好?

Zookeeper架构

Zookeeper的功能有哪些

Zookeeper的数据结构(树)?基于它实现的分布式锁?基于它实现的Master选举?基于它的集群管理? Zookeeper的注册(watch)机制使用场景?

介绍下Zookeeper消息的发布订阅功能

Zookeeper的分布式锁实现方式?

Zookeeper怎么保证一致性的

Zookeeper的zab协议(原子广播协议)?

ZAB是以什么算法为基础的?ZAB流程?

Zookeeper的通知机制

Zookeeper脑裂问题

Zookeeper的Paxos算法

Zookeeper的协议有哪些?

Zookeeper如何保证数据的一致性?

Zookeeper的数据存储在什么地方?

Zookeeper从三台扩容到七台怎么做?

三、Hive面试题

说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么?

说下Hive是什么?跟数据仓库区别?

Hive架构

Hive内部表和外部表的区别?

为什么内部表的删除,就会将数据全部删除,而外部表只删除表结构?为什么用外部表更好?

Hive建表语句?创建表时使用什么分隔符?

Hive删除语句外部表删除的是什么?

Hive数据倾斜以及解决方案

Hive如果不用参数调优,在map和reduce端应该做什么

Hive的用户自定义函数实现步骤与流程

Hive的三种自定义函数是什么?实现步骤与流程?它们之间的区别?作用是什么?

Hive的cluster by、sortby、distribute by、order by区别?

Hive分区和分桶的区别

Hive的执行流程

Hive SQL转化为MR的过程?

Hive SOL优化处理

Hive的存储引擎和计算引擎

Hive中如何调整Mapper和Reducer的数目

介绍下知道的Hive窗口函数,举一些例子

Hive的count的用法

Hive的join操作原理,left join、right join、inner join、outer join的异同?

Hive如何优化join操作

Hive的map join

Hive语句的运行机制,例如包含wherehaving、groupby、orderby,整个的执行过程?

Hive使用的时候会将数据同步到HDFS,小文件问题怎么解决的?

Hive Shuffle的具体过程

Hive有哪些保存元数据的方式,都有什么特点?

Hive SOL实现查询用户连续登陆,讲讲思路

Hive的开窗函数有哪些

四、Flume面试题

介绍下Flume

Flume架构

说下Flume事务机制

介绍下Flume采集数据的原理?底层实现?

Flume如何保证数据的可靠性

Flume传输数据时如何保证数据一致性(可靠性)

Flume拦截器

如何监控消费型Flume的消费情况

Kafka和Flume是如何对接的?

五、Kafka面试题

介绍下Kafka,Kafka的作用?Kafka的组件?适用场景?

说下Kafka架构

说下Kafka的特点,优缺点

Kafka相比于其它消息组件有什么好处?

说下Kafka的ISR机制

Kafka的选举机制

Kafka的ISR、OSR和ACK介绍,ACK分别有几种值?

Kafka的工作原理?

Kafka怎么保证数据不丢失,不重复?

Kafka分区策略

Kafka如何尽可能保证数据可靠性?

Kafka数据丢失怎么处理?

Kafka如何保证全局有序?

生产者消费者模式与发布订阅模式有何异同?

Kafka的消费者组是如何消费数据的

Kafka的offset管理

Kafka为什么同一个消费者组的消费者不能消费相同的分区?

如果有一条offset对应的数据,消费完成之后,手动提交失败,如何处理?

正在消费一条数据,Kafka挂了,重启以后,消费的offset是哪一个

Kafka支持什么语义,怎么实现ExactlyOnce?

Kafka的消费者和消费者组有什么区别?为什么需要消费者组?

Kafka producer的ack设置

Kafka读取消息是推还是拉的模式?有什么好处?

Kafka如何实现高吞吐的原理?

说下Kafka中的Partition?

Kafka是如何进行数据备份的?

Kafka里面存的数据格式是什么样的?

Kafka是如何清理过期文件的?

Kafka的一条message中包含了哪些信息?

Kafka如何保证数据的Exactly Once?

Kafka消费者怎么保证Exactly Once

Kafka监控实现?

Kafka中的数据能彻底删除吗?

Kafka复制机制?

Kafka分区多副本机制?

Kafka分区分配算法

Kafka蓄水池机制

Kafka如何实现幂等性?

Kafka的offset存在哪?

Kafka中如何保证数据一致性?

Kafka新旧API区别

Kafka消息在磁盘上的组织方式

Kafka在哪些地方会有选举过程,使用什么工具支持选举?

Kafka搭建过程要配置什么参数?

Kafka的单播和多播

Kafka的高水位和Leader Epoch

Kafka的分区器、拦截器、序列化器?

Kafka连接Spark Streaming的几种方式

Kafka的生成者客户端有几个线程?

Kafka怎么防止脑裂

Zookeeper在Kafka的作用

六、HBase面试题

介绍下HBase

HBase优缺点

说下HBase原理

介绍下HBase架构

HBase读写数据流程

HBase的读写缓存

在删除HBase中的一个数据的时候,它什么时候真正的进行删除呢?当你进行删除操作,它是立马就把数据删除掉了吗?

HBase中的二级索引

HBase的RegionServer宕机以后怎么恢复的?

HBase的一个region由哪些东西组成?

HBase高可用怎么实现的?

为什么HBase适合写多读少业务?

列式数据库的适用场景和优势?列式存储的特点?

HBase的rowkey设计原则

HBase的rowkey为什么不能超过一定的长度?为什么要唯一?rowkey太长会影响Hfile的存储是吧?

HBase的RowKey设置讲究有什么原因

HBase的大合并、小合并是什么?

HBase和关系型数据库(传统数据库)的区别(优点)?

HBase数据结构

HBase为什么随机查询很快?

HBase的LSM结构

HBase的Get和Scan的区别和联系?

HBase数据的存储结构(底层存储结构)

HBase数据compact流程?

HBase的预分区

HBase的热点问题

HBase的memstore冲刷条件

HBase的MVCC

HBase的大合并与小合并,大合并是如何做的?为什么要大合并

既然HBase底层数据是存储在HDFS上,为什么不直接使用HDFS,而还要用HBase

HBase和Phoenix的区别

HBase支持SQL操作吗

HBase适合读多写少还是写多读少

七、Spark面试题

Spark的任务执行流程

Spark的运行流程

Spark的特点

Spark源码中的任务调度

Spark作业调度

Spark的架构

Spark的使用场景

Spark on standalone模型、YARN架构模型(画架构图)

Spark的yarn-cluster涉及的参数有哪些?

Spark提交job的流程

Spark的阶段划分

Spark处理数据的具体流程说下

Spark join的分类

Spark map join的实现原理

介绍下Spark Shuffle及其优缺点

什么情况下会产生Spark Shuffle?

为什么要Spark Shuffle?

Spark为什么快?

Spark为什么适合迭代处理?

Spark数据倾斜问题,如何定位,解决方案

Spark的stage如何划分?在源码中是怎么判断属于Shuffle Map Stage或Result Stage的?

Spark join在什么情况下会变成窄依赖?

Spark的内存模型?

Spark分哪几个部分(模块)?分别有什么作用(做什么,自己用过哪些,做过什么)?

RDD的宽依赖和窄依赖,举例一些算子

Spark SQL的GroupBy会造成窄依赖吗?

Spark的宽依赖和窄依赖,为什么要这么划分?

说下Spark中的Transform和Action,为什么Spark要把操作分为Transform和 Action?常用的列举一些,说下算子原理

Spark的哪些算子会有shuffle过程?

Spark有了RDD,为什么还要有Dataform和DataSet?

Spark的RDD、DataFrame、DataSet、DataStream区别?

Spark的Job、Stage、Task分别介绍下,如何划分?

为什么要根据宽依赖划分Stage?

对RDD、DAG和Task的理解

DAG为什么适合Spark?

介绍下Spark的DAG以及它的生成过程

DAGScheduler如何划分?干了什么活?

Spark容错机制?

Executor内存分配?

Spark的batchsize,怎么解决小文件合并问题?

Spark参数(性能)调优

说下什么是RDD(对RDD的理解)?RDD有哪些特点?说下知道的RDD算子 RDD底层原理

RDD属性

RDD的缓存级别?

Spark广播变量的实现和原理?

reduceByKey和groupByKey的区别和作用?

reduceByKev和reduce的区别?

使用reduceByKey出现数据倾斜怎么办?

Spark SQL的执行原理?

Spark SQL的优化?

说下Spark checkpoint

Spark SQL与DataFrame的使用?

Spark sql自定义函数?怎么创建DataFrame?

HashPartitioner和RangePartitioner的实现

Spark的水塘抽样

DAGScheduler、TaskScheduler、SchedulerBackend实现原理

介绍下Sparkclient提交application后,接下来的流程?

Spark的几种部署方式

在Yarn-client情况下,Driver此时在哪

Driver怎么管理executor

Spark的map和flatmap的区别?

Spark的cache和persist的区别?它们是transformaiton算子还是action算子? Saprk Streaming从Kafka中读取数据两种方式?

Spark Streaming的工作原理?

Spark Streaming的DStream和DStreamGraph的区别?

Spark输出文件的个数,如何合并小文件?

Spark的driver是怎么驱动作业流程的?

Spark SQL的劣势?

介绍下Spark Streaming和Structed Streaming

Spark为什么速度快?

DAG划分Spark源码实现?

Spark Streaming的双流join的过程,怎么做的?

Spark的Block管理

Spark怎么保证数据不丢失

Spark SQL如何使用UDF?

Spark温度二次排序

Spark实现wordcount

Spark Streaming怎么实现数据持久化保存?

Spark SQL读取文件,内存不够使用,如何处理?

Spark的lazy体现在哪里?

Spark运行时并行度的设置

Spark SQL的数据倾斜

八、Flink面试题

Flink架构

Flink的窗口了解哪些,都有什么区别,有哪几种?如何定义?

Flink窗口函数,时间语义相关的问题

介绍下Flink的watermark(水位线),watermark需要实现哪个实现类,在何处定义?有什么作用?

Flink的窗口(实现)机制说下

Flink的CEP

说一说Flink的checkpoint机制

Flink的Checkpoint底层如何实现的?savepoint和checkpoint有什么区别?

Flink的checkpoint流程

Flink的Exactly Once语义怎么保证?

Flink的端到端Exactly Once

Flink的水印(Watermark),有哪几种?

Flink的时间语义

Flink相比于其它流式处理框架的优点?

Flink和Spark的区别?什么情况下使用Flink?有什么优点?

Flink backPressure反压机制,指标监控你是怎么做的?

Flink如何保证一致性?

Flink支持JobMaster的HA啊?原理是怎么样的?

如何确定Flink任务的合理并行度?

Flink任务如何实现端到端一致?

Flink如何处理背(反)压?

Flink解决数据延迟的问题

Flink消费kafka分区的数据时Flink任务并行度之间的关系

使用flink-client消费kafka数据还是使用flink-connector消费

如何动态修改Flink的配置,前提是Flink不能重启

Flink流批一体解释一下

说一下Flink的check和barrier

九、数据仓库面试题

介绍下数据仓库

数仓的基本原理

数仓架构

数据仓库分层(层级划分),每层做什么?分层的好处?

数据分层是根据什么?

数仓建模常用模型吗?区别、优缺点?

星型模型和雪花模型的区别?应用场景?优劣对比

数仓建模的流程?

维度建模的步骤,如何确定这些维度的

维度建模和范式建模区别

OLAP、OLTP解释(区别)

三范式是什么,举些例子

维度设计过程,事实设计过程

维度设计中有整合和拆分,有哪些方法,并详细说明

事实表设计分几种,每一种都是如何在业务中使用

单事务事实表、多事务事实表区别与作用

说下一致性维度、一致性事实、总线矩阵

从ODS层到DW层的ETL,做了哪些工作?

数据仓库与(传统)数据库的区别?

数据质量是怎么保证的,有哪些方法保证

怎么衡量数仓的数据质量,有哪些指标

十、综合部分面试题

Saprk和Flink的区别

Flink和Spark Streaming处理数据的时候,分别怎么做?各自优势点?

为什么你觉得Flink比Spark Streaming好?

 SaprkStreaming相比Flink有什么优点

Flink和Spark对于批处理的区别?

Hive和MySQL不同?

Hive与HBase的区别?

Hive与HDFS的关系与区别?

Spark和Hive的区别

Hive和传统数据库的区别

MySQL和HBase的对比(区别)

Spark和Hadoop之间的区别

Spark为什么比MapReduce运行快?原因有哪些?

Spark和MapReduce之间的区别?各自优缺点?

Spark相比MapReduce的优点

是不是用了Spark就不需要Hadoop了?

Spark Streaming和Storm的区别

Flume和Kafka的区别?

为什么使用Flume+Kafka?

Spark Streaming与Kafka集成,如何保证Exactly Once语义

Spark Shuffle和MapReduce Shuffle的区别?说下各自的特点和过程

若Spark要保存数据到HDFS上,要用什么算子?

Hive SOL和Spark SOL的区别?各自优势和不足?为什么不用Spark SOL替代Hive SQL?

分布式存储系统和分布式计算框架区别?

ETL过程?

实时数仓和离线数仓的区别?

Hadoop(HDFS)和MySOL的区别?

说说Storm、FlinkSpark的区别,各自的优缺点,适用场景

HDFS与HBase有什么关系?

存储格式的选择,行式存储与列式存储的优尖

Hive、HBase、HDFS之间的关系

Scala和Java有什么区别

十一、数据库(MySQL)面试题

数据库中的事务是什么,MySQL中是怎么实现的

MySOL事务的特性?

数据库事务的隔离级别?解决了什么问题?默认事务隔离级别?

数据库第三范式和第四范式区别?

MySQL的存储引擎?

数据库有哪些锁?

分布式数据库是什么?

死锁产生的条件是什么?如何预防死锁?

介绍下数据库的join(内连接、外连接、全连接),内连接和外连接(左、右连接)的区别

MySQL的join过程

数据库中存储引擎MylSAM与InnoDB的区别

数据库索引的类型,各有什么优缺点?

MySQL的索引有哪些?索引如何优化?

介绍下MySOL的联合索引

数据库有必要建索引吗?

MySQL缺点?

什么是脏读?

列式数据库和行式数据库优劣比对

十二、结语

面试题总结是一个长期工作,面试不停,这份面试题总结就不会停。以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,就只能看自己了,毕竟每个人简历、实习、项目等都不一样。

这份面试题后续会一个季度或半年更新一次版本。