Hbase 笔记(9) 高级用法

1、行健设计

(1)、存储方式:磁盘上一个列族下所有的单元格都存储在一个存储文件(store file)中,不同列族的单元格不会出现在同一个存储文件中。

(2)、NULL 不会存储在HBase表中。

(3)、每个单元格在实际存储时也保存了行健和列键,即单独存储了它在表中所处位置的相关信息。

(4)、同一个单元格的多个版本被单独存储为连续的单元格,单元格按照时间戳降序排列。故在HFile读取时候,最新的值先被读到。

(5)、单元格的KeyValue内容:行健、列族、列限定符、时间戳、值。KeyValue存储先按照行健排序,再按列键排序。

(6)、对于KeyValue,筛选的效率从左到右变差:行健、列族、列限定符、时间戳、值。故而尽量将重要的筛选信息左移。


2、部分键扫描

(1)、扫描的范围包括起始键,不包括终止键。

(2)、行键的长度要固定。

 

3、 时间序列

(1)、salting:将行键加一个prefix。

优点:确保数据分散到所有的region server中去。

缺点:当用户要扫描一个连续范围,需要请求每个region server。多线程并行读取数据。

(2)、字段交换、提升权重:调整时间戳位置。

(3)、随机化:若数据只需要随机读取,不需要连续扫描。


4、可以将专门创建一个列族,作为索引。


5、辅助索引.

(1)、客户端管理索引:不能保证跨行原子性,可能导致数据表和辅助索引表中数据不一致。

(2)、ITHBase ( Indexed-Transactional HBase ) :事务支持可以保证所有的辅助索引更新操作一致性。增加了同步开销,不能与最新HBase绑定。

(3)、IHBase (Indexed HBase) : 不为每个索引使用单独的表,而是完全在内存中维护索引。 需要额外的资源满足IO,不能与最新HBase绑定。

(4)、协处理器:


6、事务

(1)、ITHBase ( Indexed-Transactional HBase )

(2)、ZooKeeper:可以实现事务。


7、Bloom 过滤器

(1)、Bloom过滤器原理:当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的基本思想。

优点:相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数(O(k))。另外, 散列函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。 

缺点:有一定的误识别率和删除困难。


(2)、在HBase中使用:用户可以快速判断一个文件是否包含特定的行健。如果Bloon过滤器检测文件后,答复说不包含,则肯定不包含;如果包含Bloom过滤器答复说包含,则有可能有错,文件可能包含也可能不包含,默认是1%的误判率,因此可能有1%的多余文件块被加载。这样减少不必要的块加载量,减少 IO,提升整个集群的吞吐率。


(3)、一般使用行级Bloom过滤器,行级不行才使用行加列级。


8、版本管理

(1)、如果集群的服务器时间不一致,有一台服务器A超前1小时,用户将一个值存储在A并使用隐式的时间戳。10分钟后这个region被拆分,用户一半的数据更新被移到另一个服务器上。5分钟后,当用户再向同样的列插入一个新的值,服务器会自动添加时间戳,此时新值会被以前的数据更老,从而造成错误。

(2)、若默认配置保留3个版本,向同一个列插入10次值,则Get所有版本时候,只能得到最新的3个值。但是删除最后两个版本之后,老版本的数据还可能Get到,引起”复活“现象。直到Major合并之后,老版本会被永久删除,再也拿不到。

(3)、删除标记:删除的本质是添加一个带有特定时间戳的墓碑标记到存储中。


 

转载于:https://www.cnblogs.com/leeeee/p/7276341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值