大数据面试题及答案【最新版】大数据高级面试题大全(2021版),发现网上很多大数据面试题都没有答案,所以花了很长时间搜集,本套大数据面试题大全

最近由于要准备面试就开始提早看些面试、笔试题。以下是自己总结的一些经常出现、有价值的试题,包含hadoop、hive、hbase、storm、spark等。答案仅供参考,如有错误,请指出。试题不定时更新。

如果不背 大数据面试题的答案,肯定面试会挂!

这套 大数据面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

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

03、如果在SSH中添加key,是否还需要设置密码?

04、Hadoop是否遵循UNIX模式?

05、请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。

06、请简述mapreduce中的combine和partition的作用

07、Hadoop的shuffle过程

08、什么是Kafka?

09、Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?

10、hadoop-metrics.properties文件的作用是?

11、如何知道消费者消费到哪一条消息了?

12、hbase和hive的区别

13、mapreduce作业,不让reduce输出,用什么代替reduce的功能。

14、hadoop-env.sh是用于做什么的?

15、是否可以自行搭建Hadoop集群?

16、介绍一下hbase

17、如何访问hbase中的行

18、hbase如何调优

19、hive内部表和外部表的区别

20、用mapreduce实现sql语 select count (x) from a group by b;

21、谈谈Zookeeper理解

22、请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?

23、宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。

24、offset是每天消息的偏移量

25、hbase中表的特点

26、请写出以下的shell命令

27、简答说一下hadoop的map-reduce编程模型

28、MR程序运行的时候会有什么比较常见的问题?

29、hive能像关系型数据库那样建多个库吗?

30、请列出你所知道的hadoop调度器,并简要说明其工作方法

31、你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点

32、请列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。

33、hbase过滤器实现原则

34、查看所有的topic

35、insert into 和override write区别

36、Kafka的消息发送

37、Hive与关系型数据库的关系?

38、hive的内表和外表

39、请列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。

40、那些RDD 需要cache

41、过滤器有什么用途:

42、RDD缓存

43、什么是spark

44、假如Namenode中没有数据会怎么样?

45、假如一个分区的数据逐步错误怎么通过hivesql删除

46、storm怎么保障消息不丢失

47、解释下hbase实时查询原理

48、RDD 是什么

49、描述Hbase的rowkey的设计原则

50、Sqoop工作原理是什么?

51、datanode在什么情况下不会备份

52、请列出你所知道的hadoop调度器,并简要说明其工作方法?

53、Hadoop安装在什么目录下?

54、当你输入hadoopfsck 造成“connection refused java exception’”时,系统究竟发生了什么?

55、spark调优

56、RAM的溢出因子是?

57、hive sql知识点

58、为什么hive的分区

59、当前日志采样格式为

60、Namenode、Job tracker和task tracker的端口号是?

61、请用java实现非递归二分查询

62、是客户端还是Namenode决定输入的分片?

63、mapred.job.tracker命令的作用?

64、全分布模式又有什么注意点?

65、hive 跟hbase的区别

66、请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?

67、KafkaUtils.createDstream 和 KafkaUtils.createDirectstream 区别

68、Kafka与传统消息队列的区别

69、Master文件是否提供了多个入口?

70、Spark的数据本地性有哪几种?

如果不背 大数据面试题的答案,肯定面试会挂!

这套 大数据面试题大全,希望对大家有帮助哈~

博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐