一、过滤器
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
相关推荐
然而,值得注意的是,精简版的JAR包可能不包含所有的功能,如果需要高级特性,比如分布式协调、复制或者复杂的过滤器,可能需要引入更完整的HBase依赖。 总的来说,了解并正确使用HBase的Java API对于Java开发者来...
**HBase实验报告** 在本实验中,我们主要聚焦于HBase,这是一个基于谷歌Bigtable设计的开源...在后续的学习和实践中,应深入研究HBase的其他高级特性,如Region Split、Compaction等,以便更好地应用到实际项目中。
- **存储API**(Storage API):HBase提供了一套用于数据存储和访问的API,使得开发人员能够方便地与之交互。 - **实现细节**:HBase的核心组件包括Master、RegionServer等,其中Master负责管理和监控整个集群的...
- **第6章:替代HBase客户端**:介绍除了Java API之外的其他语言接口(如Thrift、RESTful API等),以及如何使用这些客户端进行开发。 - **第三部分:示例应用程序** - **第7章:构建实际应用**:通过一系列具体...
通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST(Representational State Transfer)接口使得非Java客户端能以HTTP协议与HBase通信,使用JSON格式交换数据。这使得...
5. HBase的高级特性:例如HBase的过滤器、协处理器(Coprocessor)以及对Hadoop生态系统的集成,这些特性可以用于复杂的查询和数据处理。 6. HBase的性能优化:包括合理配置HBase的参数、读写优化、内存管理等,以...
最后,书中可能还会涵盖一些高级主题,如HBase的最新特性和发展趋势,如Coprocessors、Phoenix SQL支持、实时流处理以及HBase与其他大数据技术的集成。 通过阅读《HBase不睡觉书》,读者不仅可以全面了解HBase的...
然而,尽管Phoenix提供了SQL接口,但其并非完全符合标准SQL,某些高级特性(如窗口函数、递归查询等)可能受限。因此,在实际应用中,开发者需要对Phoenix的语法特性和限制有清晰的理解,以确保查询效率和正确性。 ...
在编程领域,HBase是一种基于Apache Hadoop的分布式非关系型数据库,专为处理大规模数据而设计。HBase提供了一套Java API,使得...同时,深入研究HBase的高级特性和最佳实践,将有助于提高数据处理的效率和灵活性。
3. 查询数据:通过Geomesa-HBase的命令行工具或API进行复杂的地理空间查询,如距离查询、覆盖查询等。 五、高级功能 1. 安全性:Geomesa-HBase支持Hadoop的安全认证机制,如Kerberos,以保障数据安全。 2. 分析与...
对于初学者,建议先了解HBase的基本概念,然后动手实践设置HBase环境,创建表,插入数据,进行查询和删除操作,进一步探索HBase的高级特性,如 Coprocessors、Compaction、Splitting等。 总之,"hbase-2.4.1-bin....
**HBase MOB (Miscellaneous Object Block) 是 HBase 数据存储模型的一个重要组成部分,主要针对小文件进行优化...这个项目展示了如何在大数据环境中有效管理和处理小文件,同时利用 HBase 的高级特性提升系统性能。
### 客户端API基础与高级特性 HBase提供了丰富的客户端API,覆盖了基本的CRUD操作、批量操作、行锁管理、扫描查询等功能。此外,还包含了更高级的特性,如过滤器、计数器、协处理器、连接池管理和并发控制机制,...
此外,源代码还可能涵盖了HBase的高级特性,如Coprocessors(协处理器)、Bulk Load(批量加载)、Filters(过滤器)等。Coprocessors允许我们在RegionServer上实现自定义逻辑,从而进行数据验证、数据计算或者提供...
本书还详细讲解了HBase的API和工具,包括Java API、命令行接口(HBase Shell)以及监控和管理工具。学习如何创建、查询和操作HBase表,以及如何进行数据导入导出,对于实际开发和运维至关重要。此外,书中还会讨论...
在《HBase权威指南》的配套源码中,读者可以找到书中涉及的实例代码,这些代码涵盖了HBase的基本操作,如创建表、插入数据、查询数据、使用过滤器、进行批量操作等,以及更高级的主题,如HBase与Hadoop的交互、性能...
在高级特性部分,书里涵盖了Coprocessor、Filter、Compaction和Replication等关键特性。Coprocessor允许用户自定义逻辑,实现数据处理的本地化,提高效率;Filter则提供了灵活的数据筛选机制;Compaction是HBase维护...