当前位置: 首页 > news >正文

Hbase面试题总结

一、介绍下HBase架构

--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存储结构?

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

三、HBase读写流程

--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由哪些东西组成?

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设计原则

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

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

--热点问题
在HBase中,热点问题指的是某个或某些特定的行键(rowkey)或列族(column family)被频繁访问,导致某些RegionServer的负载过高,从而影响整个系统的性能和稳定性--处理方案
1、预分区
HBase默认创建的表只有一个Region,这可能导致所有数据都写入到这一个Region中,从而引发热点问题。通过预分区,可以在创建表时指定Region的数量,使数据在多个Region中均匀分布。、
2、RowKey设计
可以yong加盐的方式,在RowKey前加上一个随机前缀,使得原本相近的RowKey分散到不同的Region中。
3、使用缓存
HBase自带了缓存机制,可以将热点数据放入缓存中,减少磁盘I/O操作,提高访问速度。
http://www.lryc.cn/news/388598.html

相关文章:

  • C语言部分复习笔记
  • Rust学习笔记 (命令行命令) : 用override set 设置工具链
  • cv::Mat类的矩阵内容输出的各种格式的例子
  • Redis--注册中心集群 Cluster 集群-单服务器
  • CV01_相机成像原理与坐标系之间的转换
  • Android Lint
  • 【算法刷题 | 动态规划14】6.28(最大子数组和、判断子序列、不同的子序列)
  • vue3 vxe-grid列中绑定vxe-switch实现数据更新
  • Hive SQL:实现炸列(列转行)以及逆操作(行转列)
  • MD5算法详解
  • ES6的代理模式-Proxy
  • 排序(堆排序、快速排序、归并排序)-->深度剖析(二)
  • 七一建党节|热烈庆祝中国共产党成立103周年!
  • Spring Boot应用知识梳理
  • Spring中利用重载与静态分派
  • 文本三剑客之awk:
  • SpringSecurity-授权示例
  • 选哪个短剧系统源码好:全面评估与决策指南
  • AI时代的软件工程:挑战与改变
  • Zuul介绍
  • 7-1作业
  • ElasticSearch安装、配置详细步骤
  • 【Mybatis 与 Spring】事务相关汇总
  • Leetcode 2065. 最大化一张图中的路径价值(DFS / 最短路)
  • SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution
  • 七月论文审稿GPT第5版:拿我司七月的早期paper-7方面review数据集微调LLama 3
  • 盘古5.0,靠什么去解最难的题?
  • 2.3章节Python中的数值类型
  • 每日Attention学习7——Frequency-Perception Module
  • 【从0实现React18】 (五) 初探react mount流程 完成核心递归流程