Hbase中Region/Store/StoreFile/Hfile之间的关系

Region/Store/StoreFile/Hfile之间的关系

Hbase中Region/Store/StoreFile/Hfile之间的关系_第1张图片

1. Region

table在行的方向上分隔为多个RegionRegion是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上,但同一个Region是不会拆分到多个server上。

Region按大小分隔,表中每一行只能属于一个region。随着数据不断插入表,region不断增大,当region的某个列族达到一个阈值(默认256M)时就会分成两个新的region

2. Store

每一个region有一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面,即为每个ColumnFamily建一个store即有几个ColumnFamily,也就有几个Store)。一个Store由一个memStore0多个StoreFile组成。

HBase以store的大小来判断是否需要切分region。

3. MemStore

memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值(默认64MB)时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStoreflush操作。

4. StoreFile

memStore内存中的数据写到文件后就是StoreFilememstore的每次flush操作都会生成一个新的StoreFile),StoreFile底层是以HFile的格式保存。

5. HFile

HFile是HBase中KeyValue数据的存储格式,是hadoop的二进制格式文件。一个StoreFile对应着一个HFile。而HFile是存储在HDFS之上的。HFile文件格式是基于Google Bigtable中的SSTable,如下图所示:
Hbase中Region/Store/StoreFile/Hfile之间的关系_第2张图片

首先HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo。Trailer中又指针指向其他数据块的起始点,FileInfo记录了文件的一些meta信息。

你可能感兴趣的:(Hbase,hbase,hadoop,大数据)