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
    
posted @ 2022-01-13 20:04  追こするれい的人  阅读(87)  评论(0编辑  收藏  举报