Hbase面试题总结

一、介绍下HBase架构

sql 复制代码
--HMaster
HBase集群的主节点,负责管理和协调整个集群的操作。它处理元数据和表的分区信息,控制RegionServer的负载均衡和故障恢复。

--RegionServer
HBase集群中的工作节点,负责存储和处理数据。每个RegionServer管理若干个Region,每个Region负责存储一部分表的数据。RegionServer处理读写请求,并与HDFS交互来存储和获取数据。
--ZooKeeper
HBase使用ZooKeeper来进行协调和管理。ZooKeeper负责选举HMaster节点,并存储HBase集群的元数据,以及监控和管理集群的状态。

--HDFS
HBase使用HDFS作为底层的分布式文件系统,用于存储数据。HBase将数据以Region的形式存储在HDFS上,每个Region对应一个HFile。

二、HBase存储结构?

sql 复制代码
由行键、列簇、列名(列限定符)、时间戳组成一个单元格,单元格中存储着具体的数据值

三、HBase读写流程

sql 复制代码
--HBase读流程
1、当客户端请求读取数据时,首先需要根据数据的行键(row key)定位到对应的Region Server。
2、在Region Server中,HBase使用MemStore和HFile两个存储结构来存储数据。MemStore是基于内存存放的数据。HFile是磁盘中的存储文件,用于数据持久化。
3、当在MemStore中找不到所需的数据时,HBase会去HFile中查找。它通过索引文件(HFile中的Blomm Filter和Block Index)快速定位到所需的数据块,并从磁盘读取数据。
4、一旦找到数据,HBase会将其返回给客户端。

--HBase写流程
1、当客户端请求写入数据时,首先需要确定数据所属的Region Server。
2、在Region Server中,数据首先会被写入到MemStore中,这是一个内存缓冲区。
3、当MemStore中的数据达到一定阈值时,MemStore中的数据会被刷新到磁盘,生成一个新的HFile并被存储到HDFS中。
4、同时,HBase会更新HBase的元数据(如Region的位置、表的结构等)。
5、当需要写入的数据量较大时,HBase还会进行数据预分区,将数据分布到不同的Region中,以实现负载均衡和并行写入。

四、HBase的一个region由哪些东西组成?

sql 复制代码
1、行键范围(start key 和 end key):每个region都有一个唯一的行键范围,用于标识该region负责存储的数据范围。
2、MemStore:每个region都有一个内存中的MemStore,用于缓存该region内的写入操作。当MemStore的大小达到一定阈值时,会将其刷新到磁盘上的HFile。
3、HFile:每个region都包含一个或多个HFile,用于持久化存储该region内的数据。HFile是HBase中的底层存储格式,以块的形式存储数据,并提供快速的读取和写入操作。
4、WAL(Write-Ahead-Log):每个region都有一个WAL,用于记录该region内的写入操作。WAL在写入操作发生时先将操作记录到日志中,然后再将数据写入MemStore。WAL的作用是保证数据的持久化和可恢复性。
5、Region Server:每个region都由一个Region Server负责管理和处理。Region Server是HBase集群中的工作节点,负责处理读写请求、维护和管理region以及与HDFS进行交互。

五、 RowKey设计原则

sql 复制代码
--长度原则
不要超过16个字节
--散列原则
如果rowkey按照时间戳的方式递增,将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段,这样将提高数据均衡分布在每个RegionServer
--唯一原则
HBase中数据存储的格式是Key-Value对,如果插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。
--排序原则
HBase中的数据是按照RowKey的字典顺序进行排序的,设计RowKey可以利用这个特性,将经常一起读取的数据存储到一起,提高查询效率

六、hbase中热点问题的处理方案

sql 复制代码
--热点问题
在HBase中,热点问题指的是某个或某些特定的行键(rowkey)或列族(column family)被频繁访问,导致某些RegionServer的负载过高,从而影响整个系统的性能和稳定性

--处理方案
1、预分区
HBase默认创建的表只有一个Region,这可能导致所有数据都写入到这一个Region中,从而引发热点问题。通过预分区,可以在创建表时指定Region的数量,使数据在多个Region中均匀分布。、
2、RowKey设计
可以yong加盐的方式,在RowKey前加上一个随机前缀,使得原本相近的RowKey分散到不同的Region中。
3、使用缓存
HBase自带了缓存机制,可以将热点数据放入缓存中,减少磁盘I/O操作,提高访问速度。
相关推荐
EasyDSS4 分钟前
视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
大数据·网络·网络协议·音视频
施嘉伟12 分钟前
Oracle 11g RAC ASM磁盘组剔盘、加盘实施过程
数据库·oracle
lilye6625 分钟前
精益数据分析(20/126):解析经典数据分析框架,助力创业增长
大数据·人工智能·数据分析
苏小夕夕38 分钟前
spark-streaming(二)
大数据·spark·kafka
珈和info41 分钟前
珈和科技助力“农险提效200%”!“遥感+”技术创新融合省级示范项目荣登《湖北卫视》!
大数据·科技·无人机·智慧农业
盈达科技1 小时前
盈达科技:登顶GEO优化全球制高点,以AICC定义AI时代内容智能优化新标杆
大数据·人工智能
橘猫云计算机设计1 小时前
springboot基于hadoop的酷狗音乐爬虫大数据分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·hadoop·spring boot·爬虫·python·数据分析·毕业设计
卓怡学长2 小时前
w304基于HTML5的民谣网站的设计与实现
java·前端·数据库·spring boot·spring·html5
冰^2 小时前
MySQL VS SQL Server:优缺点全解析
数据库·数据仓库·redis·sql·mysql·json·数据库开发
电商数据girl2 小时前
产品经理对于电商接口的梳理||电商接口文档梳理与接入
大数据·数据库·python·自动化·产品经理