最全【大数据面试题】HBase面试题附答案_hbase 面试题
20.既然HBase底层数据是存储在HDFS上,为什么不直接使用HDFS,而还要用HBase
1.介绍下HBase
HBase是一种基于Hadoop的列式分布式非关系型数据库,它是高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价服务器上搭建起大规模结构化存储集群。它是Google论文BigTable的实现。
2.HBase优缺点
优点
a. 高容错性,高扩展性,高吞吐量
b. 强一致性和持久性,数据写入内存后异步刷新到磁盘
c. 采用k-v存储方式,意味着即使数据海量增长,查询性能也不会急剧下降
d. 列式存储,数据模型灵活,具备动态添加列簇和列的能力
e. 与大数据生态系统整合紧密,可无缝与其他大数据组件协同工作
缺点
a. 由于HBASE按照Row key来读写,不支持范围条件查询
b. 结构设计复杂,因此数据量少的时候,性能并不占优势
c. 不支持表的关联操作,并且聚合查询能力差
3.介绍下的HBase的架构
(1) Zookeeper
a. 保证HMaster的高可用;
b. 存储所有的HRegion的寻址入口;
c. 实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;
d. 存储HBase的schema和table元数据;
e. Zookeeper Quorum存储-ROOT-表地址、HMaster地址
(2) HMaster
所有Region Server的管理者
a. 对于表的操作:create, delete, alter
b. 对于RegionServer的操作:分配regions到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移
(3) HRegionServer
a. 对于数据的操作:get, put, delete
b. 对于Region的操作:splitRegion、compactRegion
(4) HFile
HBase中KeyValue数据的存储格式,
(5) HStore
存储核心由MemStore和StoreFile组成。StoreFile文件数量增长到阈值后会触发Compact合并操作,多个StoreFile合并为一个StoreFile,合并过程中会进行版本合并和数据删除。当单个StoreFile达到一定阈值后,会触发Split操作,将当前一个Regin分为两个Regin,父Regin下线,新Regin由HMaster分配到新ReginServer
(6) HLog(WAL)
每个HReginServer中有一个HLog,避免HBase意外宕机时,MemStore数据丢失。HLog定期删除已经持久化的数据。当HReginServer意外终止后,HMaster通过Zookeeper感知到,先处理遗留的HLog,将其中不同Regin的Log数据拆分,分发到相应的Regin目录下,然后再将失效的Regin重新分配,领取到这些Regin的HReginServer在Load Regin时发现有历史HLog需要处理,就将其中数据Replay到MemStore中,然后Flush到StoreFile,完成数据恢复
(7) HDFS
HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用的支持
(8) hbase-client
用来访问hbase集群
4.HBase的读写缓存
读缓存BlockCache
写缓存MemStore
5.在删除HBase中的一个数据的时候,它是立马就把数据删除掉了吗?
不是,只是将删除操作记录下来,在StoreFile文件比较多进行合并时,清理过期或者删除的数据。
6.HBase中的二级索引
(1)背景
HBASE中只有RowKey作为一级索引,在查询非RowKey数据时,需要通过MR或Spark等计算框架,效率特别低,并且特别消耗资源。
(2)原理
建立各列值与行键之间的映射关系。
(3)问题
索引和数据不一致。
参考:hbase–索引概念(含二级索引)_hbase索引-CSDN博客_hbase索引-CSDN博客")
7.HBase的RegionServer宕机以后怎么恢复的?
(1) HMaster检测到服务器宕机(通过Zookeeper);
(2) HLog切分,一个ReginServer只有一个HLog,因此要将HLog按照Regin进行切分,完成后Regin连同对应的HLog被HMaster分往新的ReginServer;
(3) 被分配了新的Regin的ReginServer根据HLog进行丢失数据的恢复,恢复完成后继续对外服务。
8.HBase的一个region由哪些东西组成?
有一个或多个Store,每个Store存放一个列簇;
每个Store由一个MemStore和0个或多个StoreFile组成。
9.HBase高可用怎么实现的?
**数据复制:**数据能够在不同的ReginServer之间进行复制;
**Zookeeper:**用于检测和管理各个节点的状态,并触发相应的操作;
**RegionServer自动恢复:**出现故障后,上面的数据会被HMaster发到其他ReginServer。
10.为什么HBase适合写多读少业务?
HBase存储引擎使用LSM树实现
- 写的时候先将数据存在内存中,达到阈值后再顺序写到磁盘上,避免了随机写;
- 读的时候,HBase只有rowkey索引,并且很难命中内存中数据,需要访问较多磁盘。
11.列式数据库的适用场景和优势?
适用场景:
a. 查询过程中,可针对各列的运算并发执行,在内存中聚合完整记录集,降低查询响应时间
b. 因为各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率
优势:
a. 列存模式下,只需要读取参与计算的列即可,极大的减低了IO花费
b. 同一列中的数据属于同一类型,压缩效果显著
适合OLAP系统
12.HBase的rowkey设计原则
(1)长度
Rowkey是一个二进制码流,太长浪费磁盘,并且MemStore中存储数据量也少建议10~100长度,最佳为16,因为64位操作系统内存8字节对齐,为8的整数倍最佳;
(2)散列原则
将RowKey高位字段作为散列字段,避免热点数据集中在一个ReginServer上;
(3)唯一原则
rowkey 是按照字典顺序排序存储的,因此可以将经常读到的数据放在一起。
13.HBase的rowkey为什么要唯一?
因为HBase是k-v存储,重复的话旧数据会被新数据覆盖
14.HBase的大合并、小合并是什么?
- 小合并(Minor Compaction)
合并相邻的StoreFile为一个较大的StoreFile
- 大合并(Major Compartion)
将所有StoreFile合并为一个StoreFile,伴随着数据的删除清理
15.HBase和关系型数据库(传统数据库)的区别(优点)?
(1)数据类型
HBase只有字符串存储,传统的关系型数据有着丰富的存储类型
(2)数据的操作
HBase只有表内数据的操作,没有表之间的关联
(3)存储方式
HBase是列式存储
(4)数据维护
HBase的修改和删除不是马上执行,操作后并不是第一时间内生效
(5)可伸缩性
HBase能够很容易的增加/减少节点
16.HBase为什么随机查询很快?
(1)只需要遍历相关Regin
(2)只需要遍历相关列簇
(3)先内存再磁盘
(4)根据key遍历
17.HBase的Get和Scan的区别和联系?
区别:
a. Get根据RowKey获取唯一值;
b. Scan按照指定的条件和顺序扫描表中的多行数据;
c. Get操作在内部对数据进行缓存,因此适用于对特定行的频繁读取。而Scan操作不会缓存数据,适用于一次性读取大量数据或按顺序遍历数据。
联系:
a. Get和Scan都可以使用过滤器(Filters)进行数据过滤,以便按照特定条件筛选所需的数据;
b. Get和Scan都可以选择返回的列族和列限定符,以获取特定的列数据。
18.HBase数据compact流程
(1) 触发
(2) 选择合并目标
(3) 合并:对选中的StoreFile进行归并排序,并进行合并,合并同时处理文件版本,时间戳等信息
(4) 清理:合并完成后,原有StoreFile会废弃,HBase会将其删除,并释放相应空间
(5) 更新元数据:Compaction完成后,HBase会更新相应的元数据信息
19.MemStore Flush条件
- MemStore达到阈值,所在regin都会flush
达到MemStore的4倍(默认),停止写入MemStore
- ReginServer中MemStore总大小达到阈值,全体flush
- 达到时间阈值,触发flush
- WAL文件数量超过阈值,regin整体flush
20.既然HBase底层数据是存储在HDFS上,为什么不直接使用HDFS,而还要用HBase
- HDFS更多的功能是大文件的存储,创建/删除文件,管理权限,对大文件的数据读取/追加。但是如果要对所存储的数据做修改/删除/插入/随机写,HDFS就做不到了
- HBase是基于HDFS进行超大数据集的分布式存储以及对数据的增删改查
21.HBase和Phoenix的区别



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
插入/随机写,HDFS就做不到了
- HBase是基于HDFS进行超大数据集的分布式存储以及对数据的增删改查
21.HBase和Phoenix的区别
[外链图片转存中…(img-mnxb26Hc-1714809614866)]
[外链图片转存中…(img-BDv6fEko-1714809614867)]
[外链图片转存中…(img-WRC3h9O1-1714809614867)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
更多推荐
所有评论(0)