大数据面试题V3.0,约870篇牛客大数据面经480道面试题
大数据面试题V3.0
一、前言
二、480道大数据面试题
Hadoop面试题(约5.5w字)
Hadoop基础
-
介绍下Hadoop
-
Hadoop的特点
-
说下Hadoop生态圈组件及其作用
-
Hadoop主要分哪几个部分?他们有什么作用?
-
Hadoop 1.x,2x,3.x的区别
-
Hadoop集群工作时启动哪些进程?它们有什么作用?
-
在集群计算的时候,什么是集群的主要瓶颈
-
搭建Hadoop集群的xml文件有哪些?
-
Hadoop的checkpoint流程
-
Hadoop的默认块大小是多少?为什么要设置这么大?
-
Block划分的原因
-
Hadoop常见的压缩算法?
-
Hadoop作业提交到YARN的流程?
-
Hadoop的Combiner的作用
-
Hadoop序列化和反序列化
-
Hadoop的运行模式
-
Hadoop小文件处理问题
-
Hadoop为什么要从2.x升级到3.x?
-
Hadoop的优缺点
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快照
-
HDFS文件存储的方式?
-
HDFS写数据过程,写的过程中有哪些故障,分别会怎么处理?
-
NameNode存数据吗?
-
使用NameNode的好处
-
HDFS中DataNode怎么存储数据的
-
直接将数据文件上传到HDFS的表目录中,如何在表中查询到该数据?
MapReduce部分
-
介绍下MapReduce
-
MapReduce优缺点
-
MapReduce架构
-
MapReduce工作原理
-
MapReduce哪个阶段最费时间
-
MapReduce中的Combine是干嘛的?有什么好外?
-
MapReduce为什么一定要有环型缓冲区
-
MapReduce为什么一定要有Shuffle过程
-
MapReduce的Shuffle过程及其优化
-
Reduce怎么知道去哪里拉Map结果集?
-
Reduce阶段都发生了什么,有没有进行分组
-
MapReduce Shuffle的排序算法
-
shuffle为什么要排序?
-
说一下map是怎么到reduce的?
-
说一下你了解的用哪几种shuffle机制?
-
MapReduce的数据处理过程
-
mapjoin的原理(实现)?应用场景?
-
reducejoin如何执行(原理)
-
MapReduce为什么不能产生过多小文件
-
MapReduce分区及作用
-
ReduceTask数量和分区数量关系
-
Map的分片有多大
-
MapReduce join两个表的流程?
-
手撕一段简单的MapReduce程序
-
reduce任务什么时候开始?
-
MapReduce的reduce使用的是什么排序?
-
MapReduce怎么确定MapTask的数量?
-
Map数量由什么决定
-
MapReduce的map进程和reducer进程的ivm垃圾回收器怎么选择可以提高吞吐量?
-
MapReduce的task数目划分
-
MapReduce作业执行的过程中,中间的数据会存在什么地方?不会存在内存中么?
-
Mapper端进行combiner之后,除了速度会提升,那从Mapper端到Reduece端的数据量会怎么变?
-
map输出的数据如何超出它的小文件内存之后,是落地到磁盘还是落地到HDFS中?
-
Map到Reduce默认的分区机制是什么?
-
结合wordcount述说MapReduce,具体各个流程,map怎么做,reduce怎么做
-
MapReduce数据倾斜产生的原因及其解决方案
-
Map Join为什么能解决数据倾斜
-
MapReduce运行过程中会发生OOM,OOM发生的位置?
-
MapReduce用了几次排序,分别是什么?
-
MapReduce压缩方式
-
MapReduce中怎么处理一个大文件
YARN部分
-
介绍下YARN
-
YARN有几个模块
-
YARN工作机制
-
YARN有什么优势,能解决什么问题?
-
YARN容错机制
-
YARN高可用
-
YARN调度器
-
YARN中Container是如何启动的?
-
YARN的改进之处,Hadoop3.x相对于Hadoop 2.x?
-
YARN监控
Zookeeper面试题(约2.6w字)
-
介绍下Zookeeper是什么?
-
Zookeeper有什么作用?优缺点?有什么应用场景?
-
Zookeeper的选举策略,leader和follower的区别?
-
介绍下Zookeeper选举算法
-
Zookeeper的节点类型有哪些?分别作用是什么?
-
Zookeeper的节点数怎么设置比较好?
-
Zookeeper架构
-
Zookeeper的功能有哪些
-
Zookeeper的数据结构(树)?基于它实现的分布式锁?基于它实现的Master选举?基于它的集群管理? Zookeeper的注册(watch)机制使用场景?
-
介绍下Zookeeper消息的发布订阅功能
-
Zookeeper的分布式锁实现方式?
-
Zookeeper怎么保证一致性的
-
Zookeeper的zab协议(原子广播协议)?
-
ZAB是以什么算法为基础的?ZAB流程?
-
Zookeeper的通知机制
-
Zookeeper脑裂问题
-
Zookeeper的Paxos算法
-
Zookeeper的协议有哪些?
-
Zookeeper如何保证数据的一致性?
-
Zookeeper的数据存储在什么地方?
-
Zookeeper从三台扩容到七台怎么做?
Hive面试题(约3.3w字)
-
说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么?
-
说下Hive是什么?跟数据仓库区别?
-
Hive架构
-
Hive内部表和外部表的区别?
-
为什么内部表的删除,就会将数据全部删除,而外部表只删除表结构?为什么用外部表更好?
-
Hive建表语句?创建表时使用什么分隔符?
-
Hive删除语句外部表删除的是什么?
-
Hive数据倾斜以及解决方案
-
Hive如果不用参数调优,在map和reduce端应该做什么
-
Hive的用户自定义函数实现步骤与流程
-
Hive的三种自定义函数是什么?实现步骤与流程?它们之间的区别?作用是什么?
-
Hive的cluster by、sort bydistribute by、orderby区别?
-
Hive分区和分桶的区别
-
Hive的执行流程
-
Hive SQL转化为MR的过程?
-
Hive SQL优化处理
-
Hive的存储引擎和计算引擎
-
Hive的文件存储格式都有哪些
-
Hive中如何调整Mapper和Reducer的数目
-
介绍下知道的Hive窗口函数,举一些例子
-
Hive的count的用法
-
Hive的union和unionall的区别
-
Hive的join操作原理,leftjoin、right join、inner join、outer join的异同?
-
Hive如何优化join操作
-
Hive的mapjoin
-
Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程?
-
Hive使用的时候会将数据同步到HDFS,小文件问题怎么解决的?
-
Hive Shuffle的具体过程
-
Hive有哪些保存元数据的方式,都有什么特点?
-
Hive SOL实现查询用户连续登陆,讲讲思路
-
Hive的开窗函数有哪些
-
Hive存储数据吗
-
Hive的SOL转换为MapReduce的过程?
-
Hive的函数:UDF、UDAF、UDTF的区别?
-
UDF是怎么在Hive里执行的
-
Hive优化
-
row_number,rank,dense_rank的区别
-
Hive count(distinct)有几个reduce,海量数据会有什么问题
-
HQL:行转列、列转行
-
一条HQL从代码到执行的过程
-
了解Hive SQL吗?讲讲分析函数?
-
分析函数中加Order By和不加Order By的区别?
-
Hive优化方法
-
Hive里metastore是干嘛的
-
HiveServer2是什么?
-
Hive表字段换类型怎么办
-
parquet文件优势
Flume面试题(约0.5w字)
-
介绍下Flume
-
Flume架构
-
Flume有哪些Source
-
说下Flume事务机制
-
介绍下Flume采集数据的原理?底层实现?
-
Flume如何保证数据的可靠性
-
Flume传输数据时如何保证数据一致性(可靠性)
-
Flume拦截器
-
如何监控消费型Flume的消费情况
-
Kafka和Flume是如何对接的?
-
为什么要使用Flume进行数据采集
Kafka面试题(约5.5w字)
-
介绍下Kafka,Kafka的作用?Kafka的组件?适用场景?
-
Kafka作为消息队列,它可解决什么样的问题?
-
说下Kafka架构
-
说下Kafka的特点,优缺点
-
Kafka相比于其它消息组件有什么好处?
-
Kafka生产者与消费者
-
Kafka分区容错性
-
Kafka的消费端的数据一致性
-
Kafka的leader挂掉之后处理方法
-
说下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的写入数据过程?
-
Kafka producer的ack设署
-
Kafka的ack机制,解决了什么问题?
-
Kafka读取消息是推还是拉的模式?有什么好?
-
Kafka如何实现高吞吐的原理?
-
说下Kafka中的Partition?
-
Kafka是如何进行数据备份的?
-
Kafka里面存的数据格式是什么样的?
-
Kafka是如何清理过期文件的?
-
Kafka的一条message中包含了哪些信息?
-
Kafka如何保证数据的ExactlyOnce?
-
Kafka消费者怎么保证ExactlyOnce
-
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怎么防止脑裂
-
Kafka高可用体现在哪里
-
Zookeeper在Kafka的作用
HBase面试题(约2.8w字)
-
介绍下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适合读多写少还是写多读少
-
HBase表设计
-
Region分配
-
HBase的Region切分
Spark面试题(约9.8w字)
-
Spark的任务执行流程
-
Spark的运行流程
-
Spark的作业运行流程是怎么样的?
-
Spark的特点
-
Spark源码中的任务调度
-
Spark作业调度
-
Spark的架构
-
Spark的使用场景
-
Spark on standalone模型、YARN架构模型(画架构图)
-
Spark的yarn-cluster涉及的参数有哪些?
-
Spark提交job的流程
-
Spark的阶段划分
-
Spark处理数据的具体流程说下
-
Sparkjoin的分类
-
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会造成窄依赖吗?
-
GroupBy是行动算子吗
-
Spark的宽依赖和窄依赖,为什么要这么划分?
-
说下Spark中的Transform和Action,为什么Spark要把操作分为Transform和Action?常用的列举一些,说下算子原理
-
Spark的哪些算子会有shuffle过程?
-
Spark有了RDD,为什么还要有Dataform和DataSet?
-
Spark的RDD、DataFrame、DataSet、DataStream区别?
-
Spark的Job、Stage、Task分别介绍下,如何划分?
-
Application、job、Stage、task之间的关系
-
Stage内部逻辑
-
为什么要根据宽依赖划分Stage?为
-
什么要划分Stage
-
Stage的数量等于什么
-
对RDD、DAG和Task的理解
-
DAG为什么适合Spark?
-
介绍下Spark的DAG以及它的生成过程
-
DAGScheduler如何划分?干了什么活?
-
Spark容错机制?
-
RDD的容错
-
Executor内存分配?
-
Spark的batchsize,怎么解决小文件合并问题?
-
Spark参数(性能)调优
-
介绍一下Spark怎么基于内存计算的
-
说下什么是RDD(对RDD的理解)?RDD有哪些特点?说下知道的RDD算子
-
RDD底层原理
-
RDD属性
-
RDD的缓存级别?
-
Spark广播变量的实现和原理?
-
reduceByKey和groupByKey的区别和作用?
-
reduceByKey和reduce的区别?
-
使用reduceByKey出现数据倾斜怎么办?
-
Spark SQL的执行原理?
-
Spark SQL的优化?
-
说下Spark checkpoint
-
Spark SQL与DataFrame的使用?
-
Sparksql自定义函数?怎么创建DataFrame?
-
HashPartitioner和RangePartitioner的实现
-
Spark的水塘抽样
-
DAGScheduler、TaskScheduler、SchedulerBackend实现原理
-
介绍下Sparkclient提交application后,接下来的流程?
-
Spark的几种部署方式
-
在Yarn-client情况下,Driver此时在哪
-
Spark的cluster模式有什么好处
-
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为什么比Hadoop速度快?
-
DAG划分Spark源码实现?
-
Spark Streaming的双流join的过程,怎么做的?
-
Spark的Block管理
-
Spark怎么保证数据不丢失
-
Spark SQL如何使用UDF?
-
Spark温度二次排序
-
Spark实现wordcount
-
Spark Streaming怎么实现数据持久化保存?
-
Spark SQL读取文件,内存不够使用,如何处理?
-
Spark的lazy体现在哪里?
-
Spark中的并行度等于什么
-
Spark运行时并行度的设署
-
Spark SQL的数据倾斜
-
Spark的exactly-once
-
Spark的RDD和partition的联系
-
park 3.0特性
-
Spark计算的灵活性体现在哪里
Flink面试题(约4.7w字)
-
Flink架构
-
Flink的窗口了解哪些,都有什么区别,有哪几种?如何定义?
-
Flink窗口函数,时间语义相关的问题
-
介绍下Flink的watermark(水位线),watermark需要实现哪个实现类,在何处定义?有什么作用?
-
Flink的窗口(实现)机制
-
说下Flink的CEP
-
说一说Flink的Checkpoint机制
-
Flink的Checkpoint底层如何实现的?savepoint和checkpoint有什么区别?
-
Flink的Checkpoint流程
-
Flink Checkpoint的作用
-
Flink中Checkpoint超时原因
-
Flink的ExactlyOnce语义怎么保证?
-
Flink的端到端ExactlyOnce
-
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
-
说一下Flink状态机制
-
Flink广播流
-
Flink实时topN
-
在实习中一般都怎么用Flink
-
Savepoint知道是什么吗
-
为什么用Flink不用别的微批考虑过吗
-
解释一下啥叫背压
-
Flink分布式快照
-
Flink SQL解析过程
-
Flink on YARN模式
-
Flink如何保证数据不丢失
数仓面试题(约3.6w字)
-
介绍下数据仓库
-
数仓的基本原理
-
数仓架构
-
数据仓库分层(层级划分),每层做什么?分层的好处?
-
数据分层是根据什么?
-
数仓分层的原则与思路
-
数仓建模常用模型吗?区别、优缺点?
-
星型模型和雪花模型的区别?应用场景?优劣对比
-
数仓建模有哪些方式?
-
数仓建模的流程?
-
维度建模的步骤,如何确定这些维度的
-
维度建模和范式建模区别
-
维度表和事实表的区别?
-
什么是ER模型?
-
OLAP、OLTP解释(区别)三范式是什么,举些例子
-
维度设计过程,事实设计过程
-
维度设计中有整合和拆分,有哪些方法,并详细说明
-
事实表设计分几种,每一种都是如何在业务中使用
-
单事务事实表、多事务事实表区别与作用
-
说下一致性维度、一致性事实、总线矩阵
-
从ODS层到DW层的ETL,做了哪些工作?
-
数据仓库与(传统)数据库的区别?
-
数据质量是怎么保证的,有哪些方法保证
-
怎么衡量数仓的数据质量,有哪些指标
-
增量表、全量表和拉链表
数据库面试题(约3.9w字)
-
数据库中的事务是什么,MySQL中是怎么实现的
-
MySQL事务的特性?
-
数据库事务的隔离级别?解决了什么问题?默认事务隔离级别?
-
脏读,幻读,不可重复读的定义
-
MySQL怎么实现可重复读?
-
数据库第三范式和第四范式区别?
-
MySQL的存储引擎?
-
数据库有哪些锁?
-
说下悲观锁、乐观锁
-
分布式数据库是什么?
-
死锁产生的条件是什么?如何预防死锁?
-
介绍下数据库的ioin(内连接,外连接,全连接),内连接和外连接(左,右连接)的区别
-
MySQL的join过程
-
MySQL有哪些存储引擎?
-
数据库中存储引擎MvlSAM与InnoDB的区别
-
Mylsam适用于什么场景?
-
InnoDB和Mvlsam针对读写场景?
-
MySQL Innodb实现了哪个隔离级别?
-
InnoDB数据引擎的特点
-
InnoDB用什么索引
-
Hash索引缺点
-
数据库索引的类型,各有什么优缺点?
-
MySQL的索引有哪些?索引如何优化?
-
有哪些数据结构可以作为索引呢?
-
B树与B+树的区别?
-
为什么使用B+树作为索引结构?
-
不使用B+树,可以用那个数据类型实现一个索引结构
-
介绍下MySQL的联合索引联合索使用原则
-
数据库有必要建索引吗?
-
MySQL缺点?
-
什么是脏读?怎么解决?
-
为什么要有三大范式,建数据库时一定要遵循吗?
-
数据库一般对哪些列建立索引?索引的数据结构?
-
MySOL中索引的建立需要考虑哪些问题
-
关系型数据库与非关系型数据库区别
-
MySQL与Redis区别
-
列式数据库和行式数据库优劣比对
-
除了UTF-8还有什么编码格式
-
布隆过滤器的基本原理是什么?局限性是什么?使用什么方法可以增加删除的功能?
-
你在哪些场景下使用了布隆过滤器?
-
SQL慢查询的解决方案(优化)?
-
聚簇索引、非聚簇索引说一下
-
哈希索引和B+相比的优势和劣势?
-
MVCC知道吗?