大数据面试题及答案【最新版】大数据高级面试题大全(最新版),发现网上很多大数据面试题都没有答案,所以花了很长时间搜集,本套大数据面试题大全
最近由于要准备面试就开始提早看些面试、笔试题。以下是自己总结的一些经常出现、有价值的试题,包含hadoop、hive、hbase、storm、spark等。答案仅供参考,如有错误,请指出。试题不定时更新。
最近有空打开文章,看了这么多浏览量,我就加急搞了一些新的题
我在 CSDN 发布的其他的 Jvm ,SpringCloud,SpringBoot 面试题
SpringBoot面试题及答案140道(最新)持续更新_架构师专栏的博客-CSDN博客工作5年,处于找工作中ing。今年10月份刚刚整理出来的SpringBoot面试题,时间比较赶就没有按照模块分类排序了。总而言之,顺序比较乱,希望大家耐着性子 看。如果实在介意,评论告知,我会视情况作修改的。另外如果大家觉得我找的SpringBoot面试题答案不够清晰,欢迎私信或者评论只出,我看到都会去修改的!1、SpringBoot有哪些优点?SpringBoot的优点有:1、减少开发,测试时间和努力。2、使用JavaConfig有助于避免使用XML。3、避免大量的Maven..._springboot面试题https://souyunku.blog.csdn.net/article/details/120850410300道SpringCloud面试题及答案(最新整理)_架构师专栏的博客-CSDN博客最新SpringCloud面试题及答案【附答案解析】SpringCloud面试题及答案,SpringCloud最新面试题及答案,SpringCloud面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~如果不背 SpringCloud面试题的答案,肯定面试会挂!这套SpringCloud面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个Java面试手册,是PDF版_springcloud面试题
https://souyunku.blog.csdn.net/article/details/121652224Java中级面试题及答案(120道Java中级面试题大汇总)_架构师专栏的博客-CSDN博客Java中级面试题及答案【最新版及答案,干货!!!这是一个中级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。Java中级面试永远是程序员迈向成功的第一个门槛,想要面试成功,各种面试题的洗礼是必不可少的,下面就来看看小编精心整理的一些java高级工程师面试题及答案吧。如果不背 Java面试题的答案,肯定面试会挂!这套Java面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的_java中级面试题
https://souyunku.blog.csdn.net/article/details/121208556110道 MySQL面试题及答案 (持续更新)_mysql 面试题_架构师专栏的博客-CSDN博客MySQL面试题及答案 【最新版】MySQL面试题大全,发现网上很多MySQL面试题及答案整理都没有答案,所以花了很长时间搜集,本套MySQL面试题大全如果不背 MySQL面试题的答案,肯定面试会挂!这套MySQL面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个面试手册,是PDF版的1、NOW()和CURRENT_DATE()有什么区别?NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。CURRENT_DATE()仅显示当前年份,月份和日期。2、CHA_mysql 面试题
https://souyunku.blog.csdn.net/article/details/121677978110道 Jvm面试题总结及答案 (持续更新)_架构师专栏的博客-CSDN博客最新Jvm面试题总结及答案【附答案解析】Jvm面试题及答案2021,Jvm面试题最新面试题,Jvm面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~如果不背 Jvm面试题的答案,肯定面试会挂!这套Jvm面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个面试手册,是PDF版的1、谈谈动态年龄判断1、这里涉及到 -XX:TargetSurvivorRati._jvm面试题
https://souyunku.blog.csdn.net/article/details/121648703已经整理成7000多页,面试手册PDF版已经整理成7000多页,面试手册PDF版
https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA
如果不背 大数据面试题的答案,肯定面试会挂!
这套 大数据面试题大全,希望对大家有帮助哈~
新增:谈谈Zookeeper理解
Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题( 解决单点故障问题 )。
Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化,通过监控这些数据状态的变化,从而可以达到基于数据的集群管理
总结: Zookeeper=文件系统+通知机制
spark
新增:请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?
/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。
/ect/sudoers
/etc/hosts
/etc/sysconfig/network
/etc/inittab
新增:宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。
如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。
新增:offset是每天消息的偏移量
每个日志文件都有一个offset来唯一标记一条信息,由8个自己数字表示,表示此消息在分区中所处的起始位置
每个分区再物理存储层面,由多个logfile组成(segment)
最小的offset表示segment中起始消息的offset
新增:hbase中表的特点
大:上亿行,上百万列
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列
面向列的存储和权限控制,列族独立索引
对于为null的列,并不占用存储空间,因此表可以设置的非常稀疏
数据多版本:可以有多个版本,系统自动分配,时间戳为版本号
数据类型单一:只有字节数组 byte[]
129.hbase 表逻辑结构
表有 行 和 列组成,列划分为若干个列族cloumn
表明 test
rowkey 列族1:base_info 列族2:xxx_info
0001 name:zhangsan age:20 address:bj
0002 name:lishi age:50 sex:male address:shanghai hoppies:sing
rowkey:hbase的行索引,按照rowkey字典顺序排序
cell可以锁定一个值:Rowkey+列族+列族下的列的名字+值+时间戳
新增:请写出以下的shell命令
1、 杀死一个job
2、 删除hdfs上的 /tmp/aaa目录
3、 加入一个新的存储节点和删除一个节点需要执行的命令
4、 hadoop job –list 得到job的id,然后执 行 hadoop job -kill jobId就可以杀死一个指定jobId的job工作了。
5、 hadoopfs -rmr /tmp/aaa
6、 增加一个新的节点在新的几点上执行
Hadoop daemon.sh start datanode
Hadooop daemon.sh start tasktracker/nodemanager
下线时,要在conf目录下的excludes文件中列出要下线的datanode机器主机名
然后在主节点中执行 hadoop dfsadmin -refreshnodes à下线一个datanode
删除一个节点的时候,只需要在主节点执行
hadoop mradmin -refreshnodes —下线一个tasktracker/nodemanager
新增:简答说一下hadoop的map-reduce编程模型
首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合
使用的是hadoop内置的数据类型,比如longwritable、text等
将键值对集合输入mapper进行业务处理过程,将其转换成需要的key-value在输出
之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getpartition方法来自定义分区规则
之后会对key进行进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义分组规则
之后进行一个combiner归约操作,其实就是一个本地段的reduce预处理,以减小后面shufle和reducer的工作量
reduce task会通过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个job
新增:MR程序运行的时候会有什么比较常见的问题?
比如说作业中大部分都完成了,但是总有几个reduce一直在运行。
这是因为这几个reduce中的处理的数据要远远大于其他的reduce,可能是对键值对任务划分的不均匀造成的数据倾斜。
解决的方法可以在分区的时候重新定义分区规则对于value数据很多的key可以进行拆分、均匀打散等处理,或者是在map端的combiner中进行数据预处理的操作。
新增:hive能像关系型数据库那样建多个库吗?
当然能了。
新增:请列出你所知道的hadoop调度器,并简要说明其工作方法
Fifo schedular :默认,先进先出的原则
Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。
Fair schedular:公平调度,所有的 job 具有相同的资源。
博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的
已经整理成7000多页,面试手册PDF版已经整理成7000多页,面试手册PDF版https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA
1、datanode在什么情况下不会备份
强制关闭或非正常断电时
2、请列出你所知道的hadoop调度器,并简要说明其工作方法?
比较流行的三种调度器有:默认调度器FIFO,计算能力调度器CapacityScheduler,公平调度器Fair Scheduler
默认调度器FIFO
hadoop中默认的调度器,采用先进先出的原则
计算能力调度器CapacityScheduler
选择占用资源小,优先级高的先执行
公平调度器FairScheduler
同一队列中的作业公平共享队列中所有资源
3、Hadoop安装在什么目录下?
Cloudera和Apache使用相同的目录结构,Hadoop被安装在cdusrlibhadoop-0.20。
4、当你输入hadoopfsck 造成“connection refused java exception’”时,系统究竟发生了什么?
这意味着Namenode没有运行在你的VM之上。
5、spark调优
1、 避免创建重复RDD
2、 尽可能复用同一个RDD
3、 对多次使用的RDD进行持久化
4、 避免使用shuffle算子
5、 使用map-side预聚合shuffle操作
6、 使用高性能的算子
7、 广播大变量
8、 使用Kryo序列化
9、 优化数据结构
6、RAM的溢出因子是?
溢出因子(Spill factor)是临时文件中储存文件的大小,也就是Hadoop-temp目录。
7、hive sql知识点
DML 数据操纵语言
DDL 数据定义语言,用语定义和管理数据库中的对象
8、为什么hive的分区
为了避免select扫描全表,hive提出了分区表partitionedby的概念,给文件归类打上表示
静态分区:
单分区建表
create table par_tab(name string,nation string) partitioned by (sex string) row format delimited fields terminated by ‘,’;
加载:load data local inpath ‘/hdfs/…’ into table par_tab partition(sex=‘man’)
在创建分区表的时候,系统会在hive数据仓库默认路径/user/hive/warehouse/创建目录,在创建sex=man的目录,最后在分区名下存放实际的数据文件
多分区建表
create table par_tab(name string,nation string) partitioned by (sex string,dt string) row format delimited fields terminated by ',';
load data local inpath '/hdfs/...' into table par_tab partition(sex='man',dt="2019-08-08")
当我们查询所有的man时候,man一下的所有日期下的数据都会被查出来;如果只查询日期分区,那么hive会对路径进行修剪,从而只扫描日期分区,性别分区不做过滤
动态分区
动态分区与静态分区区别就是不指定分区目录,有系统自己选择
开启动态分区 set hive.exec.dynamic.partition=true
9、当前日志采样格式为
a , b , c , d
b , b , f , e
a , a , c , f
10、Namenode、Job tracker和task tracker的端口号是?
Namenode,70;Job tracker,30;Task tracker,60。
1、请用java实现非递归二分查询
public class BinarySearchClass { public static int binary_search(int[] array, int value) { int beginIndex = 0;// 低位下标 int endIndex = array.length - 1;// 高位下标 int midIndex = -1; while (beginIndex <= endIndex) { midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出 if (value == array[midIndex]) { return midIndex; } else if (value < array[midIndex]) { endIndex = midIndex - 1; } else { beginIndex = midIndex + 1; } } return -1; //找到了,返回找到的数值的下标,没找到,返回-1 } //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 public static void main(String[] args) { System.out.println("Start..."); int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 }; System.out.println("查找数字8的下标:"); System.out.println(binary_search(myArray, 8)); } //end //提示:自动阅卷结束唯一标识,请勿删除或增加。 }
2、是客户端还是Namenode决定输入的分片?
这并不是客户端决定的,在配置文件中以及决定分片细则。
3、mapred.job.tracker命令的作用?
可以让你知道哪个节点是Job Tracker。
4、全分布模式又有什么注意点?
全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及task tracker运行的主机。在分布式环境下,主节点和从节点会分开。
5、hive 跟hbase的区别
共同点都是用hadoop作为底层存储
区别:hive是为了减少mrjobs编写工作的批处理系统,处理速度慢。hive本身不存储数据和计算数据,依赖于hadoop,纯逻辑表
hbase是为了hadoop对实时操作的缺陷的项目,处理速度快,是物理表,提供一个超大的内存hash表,方便查询操作
如果全表扫描用 hive+hadoop
如果用索引查询与hbase+hadoop
是处理数据库文件还是读取文本文件
先读取文本文件进行清洗,然后放入hdfs,进行处理
或者直接读取MySQL中格式化数据
6、请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?
NameNode: HDFS的守护进程,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的主要功能是对内存及IO进行集中管理
Secondary NameNode:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照。
DataNode:负责把HDFS数据块读写到本地的文件系统。
JobTracker:负责分配task,并监控所有运行的task。
TaskTracker:负责执行具体的task,并与JobTracker进行交互。
7、KafkaUtils.createDstream 和 KafkaUtils.createDirectstream 区别
使用一个 receiver 接收器接收数据,接收到的数据将会保存到executor中,然后通过sparkStreaming 启动job来处理数据,默认不会丢失,可启动WAL日志,保存到hdfs上
spark.streaming.recever.writeAheadLog.enable=true 同时开启 StorageLevel.MeMORY_AND_DISK_SER_2
KafkaUtils.createDirectstream方式,他定期从Kafka的分区中查询偏移量,再根据偏移量范围在每个batch里面处理数据
优点:简化并行 高效 恰好一次被消费
hbase
8、Kafka与传统消息队列的区别
RabbitMQ吞吐量稍差Kafka,支持对消息可靠的传递,支持事务,不支持批量的操作,存储于内存或者磁盘
Kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消费的消费信息保存在客户端consumer上,consumer根据消费的点,从broker批量pull数据;无消息确认机制
Kafka具有搞得吞吐量,内部采用消息的批量处理,数据的存储和获取是本地磁盘顺序批量操作,消息处理的效率高
Kafka 的broker支持主备模式
Kafka 负载均衡 Zookeeper方向
Kafka采用Zookeeper进行管理,可以注册topic到Zookeeper上,通过zoo的协调机制,生产者保存对应topic的broker消息,可以随机或者轮询发送到broker上;并且生产者可以基于予以定义指定分片,消息发送到broker的某分片上
9、Master文件是否提供了多个入口?
是的你可以拥有多个Master文件接口。
10、Spark的数据本地性有哪几种?
Spark中的数据本地性有三种:
1、 PROCESS_LOCAL是指读取缓存在本地节点的数据
2、 NODE_LOCAL是指读取本地节点硬盘数据
3、 ANY是指读取非本地节点数据
通常读取数据PROCESS_LOCAL>NODE_LOCAL>ANY,尽量使数据以PROCESS_LOCAL或NODE_LOCAL方式读取。其中PROCESS_LOCAL还和cache有关,如果RDD经常用的话将该RDD cache到内存中,注意,由于cache是lazy的,所以必须通过一个action的触发,才能真正的将该RDD cache到内存中。
1、过滤器有什么用途:
增强hbase查询数据的功能
减少服务端返回给客户端的数据量
reduce之后数据的输出量有多大(结合具体场景,比如pi)
Sca阶段的增强日志(1.5T—2T)
过滤性质的mr程序,输出比输入少
解析性质的mr程序,输出比输入多(找共同朋友)
2、RDD缓存
rdd.cache
rdd.persist
3、什么是spark
基于内存计算发数据分析引擎,提高在大数据环境下数处理的实时性,spark仅涉及数据计算
4、假如Namenode中没有数据会怎么样?
没有数据的Namenode就不能称之为Namenode,通常情况下,Namenode肯定会有数据。
5、假如一个分区的数据逐步错误怎么通过hivesql删除
alter table ptable drop partition(daytime=‘20140921’,city=‘bj’);全部删除,文件夹还在
6、storm怎么保障消息不丢失
nimbus 告诉 Zookeeper 调度接收数据 ,spout接收数据 ack响应,其他节点进程 在spout消费拉去数据,每个tuple发送个bolt进行处理,如果成功处理则发送ack消息给zookeeper,发送消息 tuple消费失败则标记为fail,Zookeeper根据偏移量从新发送数据直到消费为止
Kafka
7、解释下hbase实时查询原理
实时查询,可疑人物是从内存中查询,一般响应为1秒内。
Hbase机制是数据先写入到内存中,当数据达到一定量,再写入磁盘中,在内存中不进行数据的更新和合并操作,值增加数据,使得用户的写操作值进入内存中可以立即返回,保证了Hasee的高性能
8、RDD 是什么
弹性分布式数据集,是spark中最基本的数据抽象,可以存于内存中或者磁盘中,分布式存储可用于分布式计算
一个不可变,可分区,里面的数据可并行计算的集合
9、描述Hbase的rowkey的设计原则
1、 rowkey长度原则:设计为定长,如果rowkey过长,内存使用率降低,会降低检索效率
2、 rowkey散列原则:将rowkey的高位作为散列字段,有程序随机生成,这样将提高数据均衡分布在每个RegionServer上,以实现负载均衡。
如果没有散列字段,所有数据就会集中在一个RegionServer上,数据检索时负载会集中在个别RegionServer上,造成热点问题,降低效率
3、 rowkey唯一原则:必须在设计上保证唯一性,rowkey是按照字段顺序排序存储的,设计rowkey时,充分利用排序这个特点,将经常读取的数据存在一块,可能被访问的数据放在一起
10、Sqoop工作原理是什么?
hadoop生态圈上的数据传输工具。
可以将关系型数据库的数据导入非结构化的hdfs、hive或者bbase中,也可以将hdfs中的数据导出到关系型数据库或者文本文件中。
使用的是mr程序来执行任务,使用jdbc和关系型数据库进行交互。
import原理:通过指定的分隔符进行数据切分,将分片传入各个map中,在map任务中在每行数据进行写入处理没有reduce。
export原理:根据要操作的表名生成一个java类,并读取其元数据信息和分隔符对非结构化的数据进行匹配,多个map作业同时执行写入关系型数据库
大数据面试题更多70道
01、什么是DAG
02、为什么会产生RDD
05、请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。
06、请简述mapreduce中的combine和partition的作用
08、什么是Kafka?
09、Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?
10、hadoop-metrics.properties文件的作用是?
13、mapreduce作业,不让reduce输出,用什么代替reduce的功能。
16、介绍一下hbase
17、如何访问hbase中的行
18、hbase如何调优
20、用mapreduce实现sql语 select count (x) from a group by b;
22、请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?
25、hbase中表的特点
30、请列出你所知道的hadoop调度器,并简要说明其工作方法
31、你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点
32、请列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。
33、hbase过滤器实现原则
34、查看所有的topic
35、insert into 和override write区别
36、Kafka的消息发送
38、hive的内表和外表
39、请列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。
41、过滤器有什么用途:
42、RDD缓存
43、什么是spark
48、RDD 是什么
52、请列出你所知道的hadoop调度器,并简要说明其工作方法?
54、当你输入hadoopfsck 造成“connection refused java exception’”时,系统究竟发生了什么?
55、spark调优
56、RAM的溢出因子是?
57、hive sql知识点
58、为什么hive的分区
59、当前日志采样格式为
60、Namenode、Job tracker和task tracker的端口号是?
66、请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?
67、KafkaUtils.createDstream 和 KafkaUtils.createDirectstream 区别
如果不背 大数据面试题的答案,肯定面试会挂!
这套 大数据面试题大全,希望对大家有帮助哈~
已经整理成7000多页,面试手册PDF版已经整理成7000多页,面试手册PDF版https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA