zoukankan      html  css  js  c++  java
  • 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)、删除标记:删除的本质是添加一个带有特定时间戳的墓碑标记到存储中。


  • 相关阅读:
    oracle数据库使用PL/sql导入excel数据
    http协议详解之响应报文 3
    http详解之post 2
    http协议详解1
    tomcat配置https协议
    linux服务端导入oracle数据库.sql脚本
    fiddler查看http压缩格式传输的报文
    SurfaceView绘制录音波形图
    android 蓝牙SPP协议通信
    好用的Android屏幕适配
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276340.html
Copyright © 2011-2022 走看看