`
zhangxiong0301
  • 浏览: 359041 次
社区版块
存档分类
最新评论

HBASE高级应用

 
阅读更多

1、行健或表设计

 

基本原则是尽量把查询的维度或信息存入行健中,因为这样筛选数据的效率最高。从表的形式看,主要有列少行多的高表和行多列少的宽表,一般情况下高表更有优势,因为hbase只能按行拆分。

 

防止数据过热:当时间序列类型的数据(行健为时间戳)写入时,数据集中在一个region中,很容易产生读写热点。解决办法有:1)添加hash前缀,2)字段交换或提升权重:即在行键中添加另外一个字段或交换杭建中多个字段的位置,3)随机化,比如对整个行健取MD5,作为新的行健。以上方法顺序度的性能由高到低,而写入的速度由低到高。

 

行健决定数据的读取维度或模式,数据行行健有序。但如果需要额外的读取顺序,则可以给表添加格外的列族,用于存储其他读取顺序的索引。比如:对于收件箱应用,行健为userID,data列族存消息数据(列名为messageID,值为消息内容),而idx列族存索引(列为标示+消息主题,值为附加信息)。这样就可以在读取索引列族时,得到按主题有序的数据。

 

2、辅助索引

 

辅助索引是为了数据可以按行健之外的方式快速定位数据。解决方案有:

1)由客户端管理索引:维护数据表和辅助索引表两个表。当数据写入时,除了写入数据外,还要将数据表的行健写入索引表。这些操作全部由应用层客户端完成,很灵活,但是缺少事务特性,当数据写入成功而索引失败时两个表将不同步,可以采用定期修剪(如周期性的跑mapreduce任务来删除或增加不一致的条目)解决。

 

2)带索引的事务性HBASE(ITHBASE):开源、扩展了hbase,主要增加保证所有辅助索引更新一致性的事务功能。同样需要数据表和辅助索引表两张表,跟客户端管理索引不同的是这些操作都在服务器端自动完成。缺点是独立于hbase发行,可能不支持某些版本的hbase。

 

3)带索引的hbase:不同以上两种方式为每个索引单独建表存储,这种方式直接在内存存储索引。当region第一次被打开或者memstore被刷写到磁盘时,通过扫描整个region来建立索引。这种方式可能消耗大量的IO和时间资源,入侵性很强,在按照辅助索引定义的顺序查找时数据表上做的是随机查找,也存在hbase版本兼容问题;优点是数据时同步的不需要额外的事务支持,而且支持类型如byte等。

 

4)协处理器:使用协处理器框架提供的服务器端的钩子函数实现类似于ITHBASE和IHBASE的索引,但不需要替换任何服务器端类。协处理器为每个region载入索引层,并维护索引。

 

3、搜索集成

 

辅助索引可以按行健意外的顺序遍历表,但不能用任意关键字来搜索数据。实现方式有:

 

1)客户端管理索引:hbase存储数据,mapreduce任务生成索引,还需用hbase作为Lucene的后台存储。另一种实现方法是把数据表的更新也转发到邻近的索引服务器中。一个实现是facebook的收件箱搜索系统:每行是一个单独的收件箱即一个用户一行;列消息中被索引的词,时间戳是消息ID,值是附加信息如词在消息中的位置。

 

2)Lucene:一个外部托管的项目提供了BuildTableIndex类,这个类以前是hbase中contrib的一部分。该类扫描整个表并建立Lucene索引并存在hdfs上。这种方式只使用hbase存储数据。

3)HBasene:直接在hbase内部建立搜索索引,并提供lucene API。

4)协处理器:协处理器提供的钩子维护索引,索引直接存储在hdfs上,每个region都有自己索引,通过搜索分布在所有region上的索引以获取完整的结果。

 

4、事务

 

1)事务型HBASE:ITHbase有一些取代默认客户端类和服务器端类的扩展类,增加啦跨行甚至跨表的事务支持。每个region都保持了一个事务列表,从beginTransaction开始,到commit结束。每次读写操作有一个事务ID,保证不受其他事务影响。

 

2)zookeeper:利用znode实现分布式锁。

 

5、布隆过滤器

 

布隆过滤器有两种:行级过滤器和行加列级的过滤器。特别注意的是:当数据表中不包含特定的行时,布隆过滤器给出正确回答;相反则不一定正确;表数据在major合并之前,会存在很多文件,常规查找要加载所有可能包含特定行的所有文件的某个数据块,然后遍历这些数据块看是否真包含这些数据。因此,使用布隆过滤器的前提之一就是,同一行数据更新集中在少数存储文件上,要不然通过布隆过滤器也无法排除文件,还是得加载这些文件中的特定块。单元格比较小才合适加布隆过滤器,否则,不拢过滤器占用的空间会很大,反而增加IO负担。使用行加列不拢过滤器的的情况是:更新的一行数据分布在大部分存储文件,每个存储文件包含该行的一部分,且更新小部分列,且读模式为按列读。综上,决定是否使用布隆过滤器,取决于数据表的读写模式和单元格大小,而过滤原则是能有效过滤掉更多的存储文件。

 

6、版本管理

 

数据的版本或时间戳分隐式上版本管理和显式版本管理。隐式版本会有一些问题存在,主要发生在集群机器时间不同步时。如客户端写入一行数据,region服务器时间慢1小时,假如客户端再读出最近一个小时的数据,则会把刚写入的数据遗漏。另外,region拆分时把region一分为二,假如一个子region被分配到另外一台机器上,当另外这台机器更新数据时,可能时间戳小于之前的时间戳,从而导致最近更新的数据被认为是老数据。

分享到:
评论

相关推荐

    hbase 资源合集 hbase 企业应用开发实战 权威指南 hbase 实战 hbase 应用架构

    此外,还讲解了HBase的高级特性,如MapReduce、Hive、Pig等与HBase的集成,以及如何进行复杂的查询操作。 《HBase实战》是一本实践导向的书籍,通过实际的项目案例,展示了HBase在不同场景下的应用,如实时分析、...

    HBase企业应用开发实战-高清

    《HBase企业应用开发实战》是一本深度剖析HBase在实际业务场景中应用的专业书籍,旨在帮助读者理解和掌握HBase的核心功能、设计理念以及在大规模数据处理中的应用策略。HBase,作为Apache的一个分布式、高性能、基于...

    HBase企业应用开发实战.rar

    除了基本操作,书中还会探讨HBase的高级特性,如Region Splitting和Merge,负载均衡,以及Zookeeper在协调HBase节点中的角色。理解这些机制对于优化HBase集群的性能和稳定性至关重要。另外,故障恢复和监控也是企业...

    HBase企业应用开发实战-马延辉 孟鑫

    7. **高级特性**:书中涵盖了HBase的高级特性,如Coprocessor(协处理器)、Bulk Load(批量加载)、Secondary Index(二级索引)和Replication(复制),帮助读者更深入地利用HBase。 8. **企业案例分析**:书中的...

    HBase企业应用开发实战

    《HBase企业应用开发实战》一书聚焦于利用HBase...总的来说,《HBase企业应用开发实战》旨在帮助读者掌握HBase的基本原理和高级技巧,通过实例学习如何在企业环境中有效地使用HBase解决大数据问题,提升数据处理能力。

    Hbase基础与应用

    ### HBase基础与应用 #### 一、列式数据库与HBase概述 ##### 列式数据库定义及分类 列式数据库是一种以列为基础进行数据存储的数据库架构,它与传统的行式数据库不同之处在于,列式数据库按照列的顺序存储数据,即...

    hbase企业应用开发实战

    本书内容在三个维度上具有重要特色:功能维度,从HBase的安装配置、参数设置,到数据模型、表结构设计、客户端使用、高级特性,本书做了系统且详尽的介绍;实战维度,不仅通过3个典型的应用案例详细讲解了如何使用...

    HBase学习利器:HBase实战

    总之,《HBase in Action》这本书全面覆盖了HBase的基础知识和高级应用技巧,对于想要深入了解HBase并将其应用于实际项目中的开发者来说,是非常宝贵的资源。通过本书的学习,读者不仅可以掌握HBase的基本操作,还能...

    Hbase权威指南(HBase: The Definitive Guide)

    - **高级配置**:对于已经熟悉HBase基础操作的读者,书中还介绍了如何根据具体需求调整配置参数,以获得更佳的性能表现。 #### 七、总结 通过上述内容可以看出,《HBase权威指南》全面而深入地介绍了HBase的相关...

    Hbase实验报告.pdf

    **HBase实验报告** 在本实验中,我们主要聚焦于HBase,这是一个基于谷歌Bigtable设计的开源...在后续的学习和实践中,应深入研究HBase的其他高级特性,如Region Split、Compaction等,以便更好地应用到实际项目中。

    大数据技术原理及应用课实验3 熟悉常用的HBase操作 林子雨实验

    通过这个实验,参与者深入理解了HBase如何在Hadoop架构中协同工作,掌握了HBase Shell命令的基本操作,并学会了使用Java API进行高级数据操作。这对于理解和应用大数据处理技术,尤其是在实时数据存储和分析场景中,...

    hbase用于查询客户端工具

    HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要...而对于需要SQL查询和高级功能的应用,Phoenix会是一个更好的选择。了解并熟练掌握这些客户端工具,可以极大地提高HBase的使用效率和灵活性。

    大数据面试题试卷.docx

    4. HBase高级应用 - Coprocessor:允许在HBase表上进行定制化操作,提高性能和安全性。 - BloomFilter:一种空间效率高的概率数据结构,用于判断一个元素是否可能存在于集合中,常用于减少不必要的数据访问。 5. ...

    HBase视频教程下载|基于微博数据应用的HBase实战开发

    当数据量达到TB或PB级的时候,传统关系型数据型已力不从心。在大数据热潮中,推出了NoSQL数据库,...课时33:Spring集成Solrj之高级操作 课时34:高亮查询功能开发之一 课时35:高亮查询功能开发之二 课时36:课程总结

Global site tag (gtag.js) - Google Analytics