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

HBASE API高级特性

阅读更多

一、过滤器

 

HBASE过滤器用来过滤数据,减少传输到客户端的网络消耗,也可以为客户端减轻一些数据处理压力。过滤器主要分为:比较过滤器,专用过滤器,附加过滤器和自定义过滤器。

 

1.比较过滤器

比较过滤器基于某些运算做出过滤判定。过滤器的两个基本要素是:比较器和运算符。运算符有:等于、不等于,小于,小于等于,大于,大于等于,NO_OP等。比较器为键或值得比较提供比较方式:BinaryComparator,BinaryPrefixComparator,NullComparator,BitComparator,RegexStringComparator,SubStringComparator等。

RowFilter:基于行健比较过滤数据。

FamilyFilter:基于列族过滤数据。

QualifierFilter:比较列的名字来过滤数据。

ValueFilter:比较某一列的值来过滤数据。结合SubStringComparator或regexStringComparator可以做到强大的过滤功能。

DependentColumnFilter:参考列过滤器可以看做ValueFilter和时间戳过滤器的结合。构造函数不传递过滤器时只会提取时间戳与参考列时间戳相等的列,如果构造函数参数加入比较运算符和比较器,则组合时间戳和ValueFilter的结果进行过滤。

 

2。专用过滤器

这类过滤器直接继承自FilterBase,用于特定场景,有些只做行筛选,只适合扫描操作。

SingleColumnValueFilter:用一列的值决定整行数据是否包含进结果集。

SingleColumnValueExcludeFilter:类似SingleColumnValueFilter,只是结果集排除参考列。

PrefixFilter:行健前缀过滤器,只要行健满足给定的前缀就会把该行返回给客户端。

PageFilter:分页过滤器,一般客户端自己记住上一次最后的rowkey,把这个rowkey放入scan中,结合pageFilter实现数据过滤。

KeyOnlyFilter:只返回键不返回值,值可能用值得长度替代。

FirstKeyOnlyFilter:只返回第一列的键,扫描完一列之后会跳过这一行,直接扫描下一行。可以用在统计行数的应用中,也可以用在按时间戳生成的列名的应用中。

InclusiveStopFilter:普通扫描的结果中包含起始行,不包含结束行。该过滤器可以让扫描包括结束行。

TimeStampFilter:只返回满足一定时间戳的值。时间戳可以是一个list,也可以在此基础上设置范围。

ColumnCountGetFilter:限制每行返回的列数。适合get操作,不太适合scan。

ColumnPaginationFilter:列分页过滤器,构造函数传入列数和列的偏移量,则返回的每行都是在这个区间段的列。

ColumnPrefixFilter:对列名称进行前缀匹配。

RandomRowFilter:构造函数传入概率值,符合条件的行有一定几率被过滤掉。

 

3。附加过滤器

SkipFilter:用来封装一个过滤器,当内部过滤器满足过滤条件时,整行数据都被过滤掉。

WhileMatchFilter:当一行数据被过滤掉时,会放弃整个扫描。

 

二、计数器

 

通常hbase更新操作步骤:获取rowlock,查询数据,在客户端修改数据,执行put等操作,释放rowlock。在搞并发情况下很容易出问题。hbase提供了计数器功能,可以方便修改并提供原子性保证。可以一次更新多个计数器,但这些计数器必须位于同一行。batch方法是否支持Increment实例,未知。不需要初始化计数器,跟redis的incr命令一样,会默认初值为0.注意计数器列,不能用put操作,否则会得到奇怪的值。计数器传递负值则表示减少计数器当前值。计数器分为单计数器和多计数器。单计数器一次操作一个计数器,由htable的incrementColumnValue方法执行。多计数器由Increment类和htable的increment方法完成。

 

三、协处理器

 

协处理器用来在region服务器端做一些额外的计算,如监听事件和简单统计任务等,为客户端减少压力。

协处理器允许用户在服务器端执行自己的代码。使用协处理器可以建立辅助索引,或维护数据引用完整性。

协处理器分两类:Observer和endPoint。Observer类似触发器,在特定事件发生时执行,分为RegionObserver,MasterObserver,WALObserver。endPoint扩展了hbase的RPC协议,类似RDBMS中的存储过程。Observer和endPoint都基于Coprocessor框架的接口实现。

Coprocessor

所有协处理器类必须实现的接口,完成协处理器的基本约定,简化框架本身的管理。Coprocessor定义了协处理器的优先级:user和System。系统级高于用户级,同一优先级按序号排序。协处理器开始和结束时会调用start(CoprocessorEnvironment)和stop(CoprocessorEnvironment)方法。CoprocessorEnvironment用来在协处理器生命周期中保持其状态。Coprocessor.stat定义了协处理器的生命周期:UNINSTALLED,INSTALLED,STARTING,ACTIVE,STOPPING,STOPPED。另外会涉及到的类是CoprocessorHost类,维护了所有协处理器实例和他们专用的环境。

Coprocessor、CoprocessorHost、CoprocessorEnvironment构成协处理器类的基础,支持协处理器类的生命周期,管理协处理器的状态,提供环境参数。

 

协处理器加载

加载有两种方式:hbase-site.xml文件方式和建表改表语句中指定。配置文件方式会把配置的协处理器加载给每一张打开的表。建表语句方式只会将协处理器加载给特定的表,只会涉及有特定表的region的region服务器,也只能用于region服务器而不能是master或WAL相关的服务器上;建表方式指定协处理器,可以用htable的setvalue实现,也可以用shell在建表时设置属性:'Coprocessor$1' => 'path-to-jar|className|priority',路径可以是hdfs路径或本地文件系统路径。

 

regionObserver类

管理region级别的操作,操作分为:region生命周期变化和客户端API调用。region生命周期操作状态分为:region将要被打开时的状态pending OPen,preOPen和postOpen方法在region打开前后调用。region正常工作时的状态open对应的方法有:preflush/postflush,preCompact/postCompact,presplit/postSplit。region在关闭时的状态pending close对应的方法:preclose/postclose。

除了region本身的生命周期时间,regionObserver还处理客户端调用事件,几乎包括所有DML,如get,put,delete等等。

regionObserver涉及到的类还包括regionCoprocessorEnvironment和ObserverContext和baseRegionObserver等。

 

masterObserver

负责处理master服务器的所有回调函数,对应的操作为DDL比如createTable,deleteTable,addCoumn等。

 

endPoint

endpoint扩展了RPC,客户端利用endpoint可以在单个或多个region执行一些统计等操作,然后将各自结果返回给客户端。如果是单个region,则用htable.coprocessorProxy方法。如果是涉及多个region则用CoprocessorExec方法。实现endPoint需要两个步骤:1)扩展CoprocessorProtocol接口,设定客户端和服务器端的RPC协议;2)扩展BaseEndPointCoprocessor。

 

四、连接池

 

1)hbase客户端和服务器端的连接由配置文件控制,即一个Configuration实例对应一个连接,若几个htable公用了一个configuration实例,则底层连接只会有一个。

2)Htable不是线程安全的,本地的写缓冲区不能保证一致性,即使setAuto

 

分享到:
评论

相关推荐

    hbase java api 所需最精简 jar

    然而,值得注意的是,精简版的JAR包可能不包含所有的功能,如果需要高级特性,比如分布式协调、复制或者复杂的过滤器,可能需要引入更完整的HBase依赖。 总的来说,了解并正确使用HBase的Java API对于Java开发者来...

    Hbase实验报告.pdf

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

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

    - **存储API**(Storage API):HBase提供了一套用于数据存储和访问的API,使得开发人员能够方便地与之交互。 - **实现细节**:HBase的核心组件包括Master、RegionServer等,其中Master负责管理和监控整个集群的...

    HBase学习利器:HBase实战

    - **第6章:替代HBase客户端**:介绍除了Java API之外的其他语言接口(如Thrift、RESTful API等),以及如何使用这些客户端进行开发。 - **第三部分:示例应用程序** - **第7章:构建实际应用**:通过一系列具体...

    hbase用于查询客户端工具

    通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST(Representational State Transfer)接口使得非Java客户端能以HTTP协议与HBase通信,使用JSON格式交换数据。这使得...

    HBase Essentials

    5. HBase的高级特性:例如HBase的过滤器、协处理器(Coprocessor)以及对Hadoop生态系统的集成,这些特性可以用于复杂的查询和数据处理。 6. HBase的性能优化:包括合理配置HBase的参数、读写优化、内存管理等,以...

    大数据【经典书籍】:HBase不睡觉书 带目录(高清)【608页】.zip

    最后,书中可能还会涵盖一些高级主题,如HBase的最新特性和发展趋势,如Coprocessors、Phoenix SQL支持、实时流处理以及HBase与其他大数据技术的集成。 通过阅读《HBase不睡觉书》,读者不仅可以全面了解HBase的...

    phoenix-hbase-2.2-5.1.2-bin.tar.gz

    然而,尽管Phoenix提供了SQL接口,但其并非完全符合标准SQL,某些高级特性(如窗口函数、递归查询等)可能受限。因此,在实际应用中,开发者需要对Phoenix的语法特性和限制有清晰的理解,以确保查询效率和正确性。 ...

    代码中利用Hbase相关的API,包括对HBase的增删改查等操作

    在编程领域,HBase是一种基于Apache Hadoop的分布式非关系型数据库,专为处理大规模数据而设计。HBase提供了一套Java API,使得...同时,深入研究HBase的高级特性和最佳实践,将有助于提高数据处理的效率和灵活性。

    geomesa-hbase安装包

    3. 查询数据:通过Geomesa-HBase的命令行工具或API进行复杂的地理空间查询,如距离查询、覆盖查询等。 五、高级功能 1. 安全性:Geomesa-HBase支持Hadoop的安全认证机制,如Kerberos,以保障数据安全。 2. 分析与...

    hbase-2.4.1-bin.tar.gz

    对于初学者,建议先了解HBase的基本概念,然后动手实践设置HBase环境,创建表,插入数据,进行查询和删除操作,进一步探索HBase的高级特性,如 Coprocessors、Compaction、Splitting等。 总之,"hbase-2.4.1-bin....

    Hbase MOB 样例

    **HBase MOB (Miscellaneous Object Block) 是 HBase 数据存储模型的一个重要组成部分,主要针对小文件进行优化...这个项目展示了如何在大数据环境中有效管理和处理小文件,同时利用 HBase 的高级特性提升系统性能。

    HBase 编程指南

    ### 客户端API基础与高级特性 HBase提供了丰富的客户端API,覆盖了基本的CRUD操作、批量操作、行锁管理、扫描查询等功能。此外,还包含了更高级的特性,如过滤器、计数器、协处理器、连接池管理和并发控制机制,...

    hbase权威指南.源代码

    此外,源代码还可能涵盖了HBase的高级特性,如Coprocessors(协处理器)、Bulk Load(批量加载)、Filters(过滤器)等。Coprocessors允许我们在RegionServer上实现自定义逻辑,从而进行数据验证、数据计算或者提供...

    HBase:权威指南(中文版)

    本书还详细讲解了HBase的API和工具,包括Java API、命令行接口(HBase Shell)以及监控和管理工具。学习如何创建、查询和操作HBase表,以及如何进行数据导入导出,对于实际开发和运维至关重要。此外,书中还会讨论...

    hbase权威指南 配套源码

    在《HBase权威指南》的配套源码中,读者可以找到书中涉及的实例代码,这些代码涵盖了HBase的基本操作,如创建表、插入数据、查询数据、使用过滤器、进行批量操作等,以及更高级的主题,如HBase与Hadoop的交互、性能...

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

    在高级特性部分,书里涵盖了Coprocessor、Filter、Compaction和Replication等关键特性。Coprocessor允许用户自定义逻辑,实现数据处理的本地化,提高效率;Filter则提供了灵活的数据筛选机制;Compaction是HBase维护...

Global site tag (gtag.js) - Google Analytics