我是靠谱客的博主 单薄苗条,最近开发中收集的这篇文章主要介绍Hbase原理解读(二)-- Hfile的文件结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HFile的文件结构

在网上找了一个随处可见的图片来辅助理解:
Hfile的文件结构
一个StoreFile分为DataBlock ,MetaBlock ,FileInfo, DataIndex, MetaIndex, Trailer。其中:

- Data Blocks
  1. 保存表中的数据,这部分的数据可以被压缩。
  2. DataBlocks中存放了大量的DataBlock,其中以键值对(key-value)的形式保存着表中的数据,其中 key是行键,value是该行的某一个列的值,所以一个HBase表中的一个行可能在底层存在多键值对保存。
  3. 每一个DataBlock的格式为:[块头] + [key长] + [value长] + [key] + [value]。
- Meta Blocks (可选的)

保存用户自定义的key-value对,可以被压缩,如果没有用户自定义的key-value,则不会有这部分。

- File Info
  1. 这是Hfile的元信息,保存着与HFile相关的一些信息。
  2. fileInfo是以key值排序key-value类型的值。基本格式为:
    keyValue元素的个数 +
    (key + value类型id + value) +
    (key + value类型id + value) +
    ……
  3. 这部分数据不能被压缩。
  4. 用户也可以在这一部分添加自己的元信息。
- Data Block Index
  1. 保存的是Data Block的索引。
  2. 该块的组成为:
    索引块头 +
    (数据块在文件中的偏移 + 数据块长 + 数据块的第一个key) +
    (数据块在文件中的偏移 + 数据块长 + 数据块的第一个key) +
    ……
- Meta Block Index (可选的)
  1. 保存的是Meta Block的索引。
  2. 该块组成格式同数据块索引,只是某部分的意义不一样,组成格式:
    索引块头 +
    (元数据在文件中的偏移 + 元数据value长 + 元数据key) +
    (元数据在文件中的偏移 + 元数据value长 + 元数据key) +
    ……
- Trailer
  1. 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先 读取Trailer,Trailer保存了每个段的起始位置
  2. 组成格式如下:
    文件尾 +
    Fileinfo偏移 +
    数据块索引偏移 +
    数据块索引个数 +
    元数据索引偏移 +
    元数据索引个数 +
    数据块中未压缩数据字节数 +
    数据块中全部数据的key-value个数 +
    压缩代码标识

最后

以上就是单薄苗条为你收集整理的Hbase原理解读(二)-- Hfile的文件结构的全部内容,希望文章能够帮你解决Hbase原理解读(二)-- Hfile的文件结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部