概述
HFile的文件结构
在网上找了一个随处可见的图片来辅助理解:
一个StoreFile分为DataBlock ,MetaBlock ,FileInfo, DataIndex, MetaIndex, Trailer。其中:
- Data Blocks
- 保存表中的数据,这部分的数据可以被压缩。
- DataBlocks中存放了大量的DataBlock,其中以键值对(key-value)的形式保存着表中的数据,其中 key是行键,value是该行的某一个列的值,所以一个HBase表中的一个行可能在底层存在多键值对保存。
- 每一个DataBlock的格式为:[块头] + [key长] + [value长] + [key] + [value]。
- Meta Blocks (可选的)
保存用户自定义的key-value对,可以被压缩,如果没有用户自定义的key-value,则不会有这部分。
- File Info
- 这是Hfile的元信息,保存着与HFile相关的一些信息。
- fileInfo是以key值排序key-value类型的值。基本格式为:
keyValue元素的个数 +
(key + value类型id + value) +
(key + value类型id + value) +
…… - 这部分数据不能被压缩。
- 用户也可以在这一部分添加自己的元信息。
- Data Block Index
- 保存的是Data Block的索引。
- 该块的组成为:
索引块头 +
(数据块在文件中的偏移 + 数据块长 + 数据块的第一个key) +
(数据块在文件中的偏移 + 数据块长 + 数据块的第一个key) +
……
- Meta Block Index (可选的)
- 保存的是Meta Block的索引。
- 该块组成格式同数据块索引,只是某部分的意义不一样,组成格式:
索引块头 +
(元数据在文件中的偏移 + 元数据value长 + 元数据key) +
(元数据在文件中的偏移 + 元数据value长 + 元数据key) +
……
- Trailer
- 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先 读取Trailer,Trailer保存了每个段的起始位置
- 组成格式如下:
文件尾 +
Fileinfo偏移 +
数据块索引偏移 +
数据块索引个数 +
元数据索引偏移 +
元数据索引个数 +
数据块中未压缩数据字节数 +
数据块中全部数据的key-value个数 +
压缩代码标识
最后
以上就是单薄苗条为你收集整理的Hbase原理解读(二)-- Hfile的文件结构的全部内容,希望文章能够帮你解决Hbase原理解读(二)-- Hfile的文件结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复