组件面试整理

记录关于大数据组件的常见面试题目

组件面试整理

Redis持久化机制

1
2
3
4
5
6
7
8
两种方式,快照(RDB),只追加文件(AOF)

快照(RDB)--默认
Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本

只追加文件(AOF)
开启AOF持久化后每执行一条会更改Redis中的数据的命令
Redis就会将该命令写入硬盘中的AOF文件

Hive的执行原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Driver组件
该组件包括Compiler,Optimizer,Executor
它可以将Hive的编译,解析,优化转化为MapReduce任务
提交给Hadoop1中的JobTracker或者是Hadoop2中ResourceManager
进行实际的执行相应的任务
MetaStore组件
存储着Hive的元数据信息,将自己的元数据存储到了关系型数据库当中
支持的数据库主要有MySQL,Derby
支持把MetaStore独立出来放在远程的集群上面
使得Hive更加健壮
元数据主要包括了表的名称,表的列,分区和属性
表的属性(是否是外部表等等),表数据所在目录
用户接口
CLI(Command Line Interface,常用的接口:命令行模式)
Client(Hive的客户端连接至Hive Server,在启动Client的时候,需要制定Hive Server所在的节点,并且在该节点上启动Hive Server)
WUI(通过浏览器的方式访问Hive)

工作过程
用户提交查询等任务给Driver
编译器获得该用户的任务Plan
编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息
编译器Compiler得到元数据信息,对任务进行编译
先将HQL转换为抽象语法树
然后将抽象语法树转换成查询块
将查询快转化为逻辑的查询计划,重写逻辑查询计划
将逻辑计划转化为物理计划(MapReduce)
最后选择最优策略
将最终的计划提交给Driver
Driver将计划Plan转交给ExecutorEngine去执行
获取元数据信息
提交给JobTracker或者ResourceManager执行该任务
任务会直接读取HDFS中文件进行相应的操作
获取执行的结果
取得并返回执行结果

优化器的主要功能
将多Multiple Join合并为一个Muti-Way Join
对Join,Group By和自定义的MapReduce操作重新进行划分
消减不必要的列
在表的扫描操作中推行使用断言
对于已分区的表,消减不必要的分区
在抽样查询中,消减不必要的桶
优化器还增加了局部聚合操作用于处理大分组聚合和增加再分区操作用于处理不对称的分组聚合