HBase 面试题(一)

HBase 面试题(一)

1、MapRedece从读取数据开始到将最终结果写入HDFS经过哪些步骤?

第一步:inputformat进行数据读读取,将数据发送给split
第二步:split 将数据进行切分,发送给RecordReader
第三步:RR将数据按照行再次切分,将切分好的数据组装成key(行首偏移量),value(每行的数据) 发送给map
第四步:map 进行自定义逻辑的书写,将数据传给Shuffle
第五步:Shuffle中的Partition 将数据key的哈希值与ReduceTask数量取余,余几就分到哪个区
第六步:Shuffle中的Sort 将数据按照一定规则进行排序
第七步:Shuffle中的Combine 将数据在map端先进行局部聚合,这样做的好处数节省了网络带宽的消耗,效率更高
第八步:Shuffle中的Group 将数据相同的key变成一个key,将这个key的Value拼装成一个Value的list
第九步:Reduce 进行自定义计算逻辑的书写,将结果发送给OutputFormat
第十步:OutPutFormat 将结果数据输出保存到HDFS上

2、Hadoop 的组成部分有哪些模块?

HDFS 分布式文件存储系统
管理者:NameNode
工作者:DataNode
辅助者:SecondayNameNode
MapReduce 分布式离线计算框架
Yarn Hadoop资源调度器
管理者:ResourceManager
工作者:NodeManager

3、请阐述一下Hbase详细架构?

Client:
访问数据的入口,包含访问hbase的API接口,维护着一些cache来加快对hbase的访问
Zookeeper:
1.zookeeper的选举机制保证任何时候,集群中只有一个master
2.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
3.存储Hbase的schema
4 存贮所有Region的寻址入口
Master:
1.为Region server分配region
2.负责region server的负载均衡
3.发现失效的region server并重新分配其上的region
4.处理schema(元数据)更新请求
Region server:
1.Region server维护Master分配给它的region,处理对这些region的IO请求
2.Region server负责切分在运行过程中变得过大的region

4、请说一下Hive的内部组成模块,作用分别是什么?

(1)解析器(SQL Parser):解析HQL语义
(2)编译器(Physical Plan):将语HQL根据语义转换成MR程序
(3)优化器(Query Optimizer):对逻辑执行计划进行优化。(对MR程序进行优化)
(4)执行器(Execution):把任务提交到hadoop集群

5.hbase读的过程

1、首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息
2、Client通过刚才获取到的IP来访问Meta,读取Meta内的数据,
3、Client通过元数据(meta表内的数据)中存储的信息,找到region在哪个HRegionServer ,访问对应的 HRegionServer读取数据

6.hbase数据的写入

1 Client 先访问zookeeper,找到Meta表,并获取Meta表元数据。确定将要写入的数据所对应的HRegion和 HRegionServer服务器。
2 Client向该HRegionServer服务器发起写入数据请求
3 RegionServer先把数据写入到HLog,以防止数据丢失。
4 然后将数据写入到Memstore。
5 若Memstore达到阈值,会将Memstore中的数据flush到Storefifile中
6 Storefifile数量达到阈值(默认3个)时,会触发Compact合并操作,把过多的Storefifile合并成一个大的Storefifile

7.为什么要HBase预分区

增加数据读写效率: 默认方式所有数据存在一个节点上,预分区将数据分散到多各节点上。
负载均衡,防止数据倾斜: 数据的rowkey分成多个区间,每个区间就是一个region,数据写入时,写入自己所在范围的region
方便集群容灾调度region: 将数据分散存储到了多个region中,region的粒度更小 优化Map数量

8.HBase的基本介绍

a.Hbase是建立在hdfs之上的一个数据库,
b.不支持join等SQL复杂操作
c.支持的数据类型:byte[],
d.依靠横向扩展,一个表可以有上十亿行,上百万列。
e.面向列(族)的存储和权限控制
f.对于为空(null)的列,并不占用存储空间,是一个稀疏表

9.distribute by+sort by(相同字段) 与Cluster by的区别

在分区字段和排序字段相同时,这两个可以作用是相同的,只是cluster by 的结果有限制,只能倒序排列,而distribute by+sort by 可根据需求进行排序

10.Hive支持的数据格式

可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE

11.hive自定义函数的类型有哪几种,分别表示什么意思?

1.UDF(User-Defined-Function) 一进一出
2.UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min

A长的像个伞,假设数据从下面流入,从上面流出,A就是聚集一堆,流出一个点
同理,T就像Y,由一股分成了好几股。
前提是记住一进一出UDF(输入一个数据,返回另一个数据)

3.UDTF(User-Defined Table-Generating Functions) 一进多出,如lateral view explore)

这让人想到了进进出出。

12.集群扩容,添加新节点需要做哪些准备?

1.配置JDK
2.配置SSH免密钥
3.关闭防火墙
4.关闭selinux
5.修改主机名
6.修改hosts

新节点必须有jdk,节点间沟通需要ssh免密,节点需要关闭防火墙增加效率,
节点需要关闭杀软selinux,节点需要改名方便交流,每个节点需要认识其它节点hosts

13.hadoop 的组成部分?

HDFS 分布式文件存储系统
管理者:NameNode
工作者:DataNode
辅助者:SecondayNameNode

MapReduce 分布式离线计算框架

Yarn Hadoop资源调度器
管理者:ResourceManager
工作者:NodeManager

14.Namenode作用

一:管理,维护文件系统的元数据/名字空间/目录树,管理数据与节点之间的映射关系(管理文件系统中每个文件/目录的block块信息)
二:管理DataNode汇报的心跳日志/报告
三:客户端和DataNode之间的桥梁(元数据信息共享)

15.DataNode作用

一:负责数据的读写操作
二:周期性的向NameNode汇报心跳日志/报告
三:执行数据流水线的复制

16.hbase中如何解决rowkey的热点问题

热点就是数据分布不均匀,集中到一个节点了。

1.哈希(随机数):将哈希值放在高位(每条数据hash值不同)
2.反转:反转固定长度或者数字格式的数据(时间戳反转、手机号反转,订单号反转)
3.加盐:本质时是加随机数,并且放在高位。

17.hbase中Hlog的切分机制

1.当数据写入hlog以后,hbase发生异常。关闭当前的hlog文件
2.当日志的大小达到HDFS数据块的0.95倍的时候,关闭当前日志,生成新的日志
3.每隔一小时生成一个新的日志文件

18.HBase的三个重要机制是什么?

1、flush机制

2、compact机制

3、split机制

把小的storeFile文件合并成大的Storefile文件。
清理过期的数据,包括删除的数据
将数据的版本号保存为3个

当Region达到阈值,会把过大的Region一分为二。

19.Crontab 定时器怎么写?

每个*什么意思,给出一个定时任务,描述出相应的内容

日 月 时 分 星期

20.SecondaryNamenode 的工作机制是什么?

NameNode创建一个Edits.new
SNN从NameNode节点拷贝Fsimage和Edits文件到SNN
SNN将两个文件导入内存进行合并操作生成一个新的Fsimage.ckpt文件
SNN将新的Fsimage.ckpt发送到NameNode节点
重命名为Fsimage替换原先的Fsimage
原先的Edits生成Edits.new文件
将Edits替换为新的Edits.new

www.zeeklog.com  - HBase 面试题(一)