HRegionServer 内部机制
HRegionServer 内部机制
WALs(写日志)
WALs 即 Write Ahead Log,在早期版本中称为 HLog,它是 HDFS 上的一个文件,所有写操作都会先保证将数据写入这个 Log 文件后(类似于 Redis 的 AOF 文件),才会真正更新 MemStore(写缓存),最后写入 HFile 文件中。
WALs 文件存储在 /hbase/WALs/
的目录中
BlockCache(读缓存)
BlockCache 是一个读缓存,即“引用局部性”原理(也应用于CPU,分空间局部性和时间局部性,空间局部性是指CPU在某一时刻需要某个数据,那么有很大的概率在一下时刻它需要的数据在其附近;时间局部性是指某个数据在被访问过一次后,它有很大的概率在不久的将来会被再次的访问),将数据预读取到内存中,以提升读的性能。
Region(分区或分片)
一个 Table 表可以有一个或多个 Region,他们可以在一个相同的 HRegionServer 上,也可以分布在不同的 HRegionServer 上,一个HRegionServer 可以有多个 Region,他们分别属于不同的 Table 表。Region 由多个 Store(HStore) 构成,每个 HStore 对应了一个 Table在这个 HRegion 中的一个 Column Family,即每个 Column Family 就是一个集中的存储单元,因而最好将具有相近 IO 特性的 Column 存储在一个 Column Family,以实现高效读取(数据局部性原理,可以提高缓存的命中率)。HStore是HBase中存储的核心,它实现了读写HDFS 功能,一个 HStore 由一个 MemStore 和 0个 或多个 StoreFile 组成。
MemStore(写缓存)
MemStore 是一个写缓存(In Memory Sorted Buffer),所有数据的写在完成 WALs 日志写后,会写入 MemStore 中,由 MemStore 根据一定的算法将数据写入到底层 HDFS 文件中(即HFile),通常每个 Region 中的每个 Column Family 有一个自己的 MemStore。
HFile(StoreFile文件数据格式)
HFile 是 StoreFile 文件的数据格式,在 HFile 中的数据是按 RowKey、Column Family、Column 排序,对相同的 Cell (即这三个值都一样),则按 timestamp 倒序排列。
HFile 文件存储于 /hbase/data/名称空间/表名/region/列族/
目录中
-
查看 HFile 文件
HBase 工具可以查看 HFile 文件内容,如下:
# 格式:hbase hfile -f /hbase/data/default/名称空间/表名hashcode/列族名/文件名 -p
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现