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

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企业应用开发实战

    实战维度,不仅通过3个典型的应用案例详细讲解了如何使用HBase设计大型的数据应用系统,而且还结合实际生产系统讲解了HBase的集群运维、监控和性能调优;理论维度,则深入分析了HBase、框架设计、模式设计和基本原理...

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

    系统介绍了Hbase的功能使用、框架设计、基本原理和高级特性。详细讲解了使用hbase设计大型数据应用系统的实践方法和技巧;深刻总结系统运维、监控和性能调优的最佳实践

    hbase企业应用开发实战

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

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

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

    HBase海量数据存储实战视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件...第三章 HBase高级 1. 重要工作机制 2. HBase批量装载——Bulk load 3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构

    《HBase实战》

    前两个部分分别介绍了分布式系统和大规模数据处理的发展历史,讲解HBase的基本原理模式设计以及如何使用HBase的高级特性;第三部分通过真实的应用和代码示例以及支持这些实践技巧的理论知识,进一步探索HBase的一些...

    HBase在时间序列数据库中的应用

    数据库高级技术专家 悠你在2017杭州云栖大会中做了题为《HBase在时间序列数据库中的应用》的分享,就时序数据和时序数据库介绍,HiTSDB针对时序场景的优化,HBase作为底层存储的优势做了深入的分析。

    hbase权威指南

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

    HBase权威指南

    使用本地java客户端,或者通过提供了rest、avro和thrift应用编程接口的网关服务器来访问hbase;了解hbase架构的细节,包括存储格式、预写日志、后台进程等;在hbase中集成mapreduce框架;了解如何调节集群、设计模式...

    HBase实战-Nick Dimiduk和Amandeep Khurana

    前两个部分分别介绍了分布式系统和大规模数据处理的发展历史,讲解HBase的基本原理模式设计以及如何使用HBase的高级特性;第三部分通过真实的应用和代码示例以及支持这些实践技巧的理论知识,进一步探索HBase的一些...

    Hbase+Spring boot实战分布式文件存储

    第4章 HBase进阶 讲解HBase的高级特性,常用的优化策略,协处理器等,并实战开发协处理器,将开发的协处理器加载到HBase测试环境,验证其功能 4-1 HBase优化策略一:服务端优化策略 4-2 HBase优化策略二:常用优化...

    HBase权威指南(中文版).pdf

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

    Hbase实战 中文版

    前两个部分分别介绍了分布式系统和大规模数据处理的发展历史,讲解HBase的基本原理模式设计以及如何使用HBase的高级特性;第三部分通过真实的应用和代码示例以及支持这些实践技巧的理论知识,进一步探索HBase的一些...

    HBase权威指南中文版

    使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式...

    HBase在阿里搜索推荐中的应用

    阿里巴巴高级技术专家 李钰(绝顶)在2017杭州云栖大会中做了题为《HBase在阿里搜索推荐中的应用》的分享,就HBase的历史和规模、应用场景、问题与优化、开源与未来做了深入的分析。

    HBase在大搜车金融业务中的应用实践

    高级数据架构师 申玉宝在2017杭州云栖大会中做了题为《HBase在大搜车金融业务中的应用实践》的分享,就HBase业务介绍,数据大屏实践,GPS 风控实践,流式数据统计做了深入的分析。

Global site tag (gtag.js) - Google Analytics