HBase 被称为面向列族的数据存储
HFile:是一种文件格式 xml
SortFile:文件名称
一个 cell 的组成:行键 列族 列限定符 时间戳 类型 值
组成:
表示行的集合
行时列族的集合
列族是列的集合
表按键范围被划分为行序列,称为区域。(HBase 的表)
区域一开始只有一个,当数据达到分区的阈值,区域自动切分。切分成两个区域。
区域是 HBase 中用于分布式存储和负载平衡的最小单元
不同的区域分布在不同的区域服务器上
表的特性:
最大版本数(VERSIONS):0.96之前,表的最大版本数默认是3,)。96之后,默认是1。
支持压缩:gzip、lzo、snappy
支持内存:
布隆过滤器 :能确保一个事件一定不存在,但不能确保事件存在。查询速度非常快
表的特点:
非常大
面向列
稀疏(逻辑存储)
表构建
create 'table name', 'columnFamily', 'columnFamily'
注意:
(一) 创建表时,只需创建表名,列族名。列名可在程序中个性化。
(二)表的名称不能以开头_符号开头,并且只能是字母、数字和下划线命名。
HBase 表的组成
rowkey:行键。是一个字节数组,最大 64KB。所以排序是字典(升序)顺序。
column Family:列族。默认情况下 1 个列族最好。列族的名字尽可能的短,最好是一个字节。
column qualifier:列限定符。列由列限定符与列族名称连接来表示。
version number:版本号。Long 类型,默认是系统时间戳。也可以自定义。
value:cell 的值。字节数组。
HFile:是一种格式。这种格式能够存储 HBase 的数据。
HFile 是一种格式,那么这个格式是什么样子的呢?
HFile 包含一个个的 Data。
每一个 Data 是由 1 个 magic + N个 keyvalue 组成
Magic:写的 keyValue 的所以 + 安全校验。
列元数据:keyValue
keyValue 是固定格式的,但不是固定长度的。
keyLength valueLength RowLength RowKey ColumnFamilyLength ColumnFamily Columnqualifier TimeStamp keyType Value
4B 4B 2B 最大64Kb 1B 尽可能短 不做任何限制 8B 1B 不大于10MB
我们存储的时候需要数据支撑。
RowKey ColumnFamily Columnqualifier TimeStamp keyType Value
keyType: Put Delete DeleteColumn DeleteFamily DeleteFamilyVersion(get scan 不是我们的事务数据类型,是查询数据类型)
RowLength RowKey ColumnFamily Columnqualifier TimeStamp keyType :这一部分是key === keyLength
Value:这一部分是value === valueLength
上一篇:红黑树简析
下一篇:Flink反压如何排查