HBase存储数据的文件格式是什么 hbase中数据存储的文件格式是什么


HBase存储数据的文件格式是什么 hbase中数据存储的文件格式是什么

文章插图
StoreFile是HBase存储数据的文件格式 。
HFile的逻辑结构HFile逻辑结构图HFile的逻辑结构
逻辑结构说明4大部分
  • Scanned block section
    • 扫描StoreFile时,所有的Data Block(数据块)都将会被读取
    • Leaf Index(LSM + C1树索引)、Bloom block(布隆过滤器)都会被读取
  • Non-scanned block section
    • 扫描StoreFile时,不会被读取
    • 包含MetaBlock和Intermediate Level Data Index Blocks
  • Opening-time data section
    • 在RegionServer启动时,需要将数据加载到内存中,包括数据块索引、元数据索引、布隆过滤器、文件信息 。
  • Trailer
    • 记录了HFile的基本信息
    • 各个部分的偏移值和寻址信息
StoreFile物理结构StoreFile是以Hfile的形式存储在HDFS上的 。Hfile的格式为下图:
StoreFile物理结构
  • HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo 。正如图中所示的,Trailer中有指针指向其他数 据块的起始点 。
  • File Info中记录了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等
  • Data Index和Meta Index块记录了每个Data块和Meta块的起始点 。
  • Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制 。每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询 。每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏 。
  • HFile里面的每个KeyValue对就是一个简单的byte数组 。但是这个byte数组里面包含了很多项,并且有固定的结构 。我们来看看里面的具体结构:
  1. 开始是两个固定长度的数值,分别表示Key的长度和Value的长度
  2. 紧接着是Key,开始是固定长度的数值,表示RowKey的长度
  3. 紧接着是 RowKey,然后是固定长度的数值,表示Family的长度
  4. 然后是Family,接着是Qualifier
  5. 然后是两个固定长度的数值,表示Time Stamp和Key Type(Put/Delete)——每一种操作都会生成一个Key-Value 。Value部分没有这么复杂的结构,就是纯粹的二进制数据了 。
  • Data Block段
保存表中的数据,这部分可以被压缩
  • Meta Block段 (可选的)
保存用户自定义的kv对,可以被压缩 。
  • File Info段
Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息 。
  • Data Block Index段
Data Block的索引 。每条索引的key是被索引的block的第一条记录的key 。
  • Meta Block Index段 (可选的)
Meta Block的索引 。
  • Trailer
这一段是定长的 。保存了每一段的偏移量,读取一个HFile时,会首先 读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key 。DataBlock Index采用LRU机制淘汰
【HBase存储数据的文件格式是什么 hbase中数据存储的文件格式是什么】


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: