`
qindongliang1922
  • 浏览: 2180952 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117400
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125817
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59788
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71225
社区版块
存档分类
最新评论

Hbase协处理器介绍

阅读更多

(一)Hbase协处理器的前世今生

Hbase是仿照Google的BigTable设计的,而其协处理器也是仿照BigTable的协处理实现完成的,具体链接可
参考:http://research.google.com/people/jeff/SOCC2010-keynote-slides.pdf


(二)什么是Hbase协处理器(Coprocessors )?

Hbase的协处理器在Hbase中属于高级的应用功能,它可以让开发者自定义的代码在服务器端执行,来完成特定的一些功能。

(三)为什么要用协处理器?

Hbase是一款高效的基于KV的NOSQL数据库,它有非常多的优点,但是也有不少缺点,hbase的设计全在rowkey上,所有能够高效的查询全是基于rowkey的,除了rowkey的设计之外,我们可能还有
一些其他的功能,如
(1)访问权限控制
(2)引用完整性,基于外键检验数据,
(3)给hbase设计二级索引,从而提高基于列过滤时的查询性能,
(4)像监控MySQL的binlog一样,监控hbase的wal预写log
(5)服务端自定义实现一些聚合函数的功能
(6).......
这样额外的功能,使用hbase的协处理来处理是非常方便的

(四)Hbase中协处理器的分类

在Hbase里面有两类Coprocessors :
1,基于Observer的Coprocessors ,类似于关系型数据库的触发器,可用来实现上面提到的功能中的1,2,3,4功能
常用的Observer:
RegionServerObserver  能够切面监测rowkey的数据的访问与删除
BaseMasterAndRegionObserver 能够切面监测hbase表的创建,删除,sheml修改
BaseWALObserver     能够切面监测hbase的wal的log写入

2,基于Endpoint的Coprocessors ,类似于关系型数据库的存储过程,可用来实现上面提到的功能中的5功能
在hbase0.96之后,采用probuff序列化通信的RPC数据,使用endpoint,需要同过protoc生成相关的service接口的java类
然后继承自己的生成的Service类并且实现hbase的Coprocessor, CoprocessorService接口,从而重写其中的业务方法构建一个
自定义的Endpoint的Coprocessors

协处理器的编程概念与Spring AOP的理念很相似,它也像MapReduce的数据运算方式,与本地local的数据产生计算,而不是远程读取数据再计算,
通过local计算的方式与RegionServer绑定,从而能提升数据计算的效率。


(5)协处理器的安装使用

hbase.coprocessor.region.classes for RegionObservers and Endpoints.
hbase.coprocessor.wal.classes for WALObservers.
hbase.coprocessor.master.classes for MasterObservers.


在hbase官网文档中,介绍了两种使用方式:


静态方式(系统级),使用配置文件:

1,编写协处理器,并打成一个jar包,加入hbase/lib目录下,或者在hbase-env.sh里面配置相对应的jar,以及依赖的jar的路径
2,加入静态的配置,在hbase-site.xml里配置主类

<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.myname.hbase.coprocessor.endpoint.SumEndPoint</value>
</property>


3,把依赖的jar分发到每一个regionserver上,然后重启hbase,
协处理生效,是系统级的协处理器

动态方式(表级别),使用Hbase shell:
1,编写协处理器,打成一个jar包,上传至HDFS,将依赖的jar拷贝到hbase的lib下,配置hbase-env.sh指定依赖jar的
2,建立表:

create 'c', NAME=>'cf'


3,禁用表

disable 'c'


4,指定协处理器的jar

alter 'c', METHOD => 'table_att', 'coprocessor'=>'hdfs:///user/hbase_solr/hbase-increment-index.jar|com.hbase.easy.index.HbaseSolrIndexCoprocesser|1001|'


5,激活表

enable 'c'


6,删除协处理jar
如果有多个协处理器,按照$1 $2 $n删除指定的jar配置

alter 'c',METHOD => 'table_att_unset',NAME =>'coprocessor$1'


最后说一下,hbase的官方文档指出动态级别的协处理器,可以做到不重启hbase,更新协处理,做法就是
禁用表,卸载协处理器,重新指定协处理器, 激活表,即可,但实际测试发现
动态加载无效,是hbase的一个bug,看这个链接:

https://issues.apache.org/jira/browse/HBASE-8445

因为协处理器,已经被JVM加载,即使删除jar也不能重新load的jar,因为cache里面的hdfs的jar路径,没有变化,所以动态更新无效
,除非重启JVM,那样就意味着,需要重启RegionServer,
里面的小伙伴们指出了两种办法,使协处理器加载生效:
(1)滚动重启regionserver,避免停掉所有的节点
(2)改变协处理器的jar的类名字或者hdfs加载路径,以方便有新的ClassLoad去加载它

但总体来看,第2种方法,比较安全,第一种风险太大,一般情况下没有人会随便滚动重启线上的服务器的,这只在hbase升级的时候使用


参考资料:

官网文档:https://hbase.apache.org/book.html#cp




有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园









0
1
分享到:
评论

相关推荐

    hbase的rowkey设计与hbase的协处理器运用.docx

    本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。HBase 的特点包括: 1. 面向列:HBase 是面向...

    Hbase协处理器详解.md

    Hbase协处理器详解,进阶篇

    hbase-rule-engine:使用 HBase 协处理器的分布式规则引擎

    该项目展示了如何使用 HBase 区域观察者协处理器将流行的开源 Drool 规则引擎与 HBase 集成,以并行应用和执行规则。 这里,Drool 规则引擎位于 HBase 的数据路径上,并且能够为 HBase 表的每个请求触发(如果满足...

    Hadoop_Learning:MapReduce,HBase,协处理器的学习与实现

    本资料“Hadoop_Learning:MapReduce,HBase,协处理器的学习与实现”将深入探讨这三个核心组件,并通过JavaScript的应用来增强理解。 MapReduce是Hadoop的核心计算模型,它将大型数据集分解为小块,然后在分布式...

    基于协处理器的HBase内存索引机制的研究.pdf

    "基于协处理器的HBase内存索引机制的研究" 本文研究了基于协处理器的HBase内存索引机制,以提高HBase的多条件查询速度。在大数据时代,传统的关系型数据库难以处理无规范模式的数据集,于是NoSQL数据库如HBase、...

    基于协处理器的HBase分类二级索引设计.pdf

    本文将深入探讨如何利用协处理器(Coprocessor)机制在HBase中实现分类的二级索引设计,以提升查询效率并优化数据管理。 一、HBase与二级索引 HBase是建立在Hadoop之上的键值存储系统,它以行键、列族、列限定符和...

    基于协处理器的HBase二级索引方法.pdf

    协处理器是一种嵌入在HBase服务器端的自定义代码,它可以在数据读写过程中执行用户定义的操作,为HBase提供了扩展功能的平台。利用协处理器,我们可以为那些频繁查询的字段创建映射到行键的二级索引。这样,在查询时...

    观察者类型协处理器ObserverProcessorLog.zip

    在“观察者类型协处理器ObserverProcessorLog.zip”这个资源中,我们可以推断它与HBase的观察者模式协处理器有关,这涉及到HBase的扩展性和自定义行为。 观察者模式(Observer Pattern)是设计模式的一种,它定义了...

    test_coprocessor.zip

    本项目"test_coprocessor.zip"通过对比错误实现与正确实现的方式,深入浅出地揭示了如何有效地使用HBase协处理器。 首先,我们来看"Common"类。这个类通常会包含一些通用的常量和方法,以供协处理器类共享使用。在...

    HBase-coprocessor

    协处理器通过宏和概括的方式,我们可以将协处理器定义为一个框架,该框架提供了一种在HBase中执行自定义代码的简便方法。 代表协处理器的最常用类比是“触发器/存储过程”和AOP。 协处理器可以开发为: 观察者协处理...

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

    4-3 HBase优化策略三:读写优化策略 4-4 HBase协处理器简介 4-5 HBase实战:开发RegionObserver协处理器 4-6 HBase实战:HBase协处理器加载 第5章 容灾与监控 HBase容灾策略的简要介绍,配合命令演示如何对数据进行...

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

    课时10:Observer协处理器实战之Master级别原理剖析 课时11:Observer协处理器实战之Region级别原理剖析 课时12:Observer协处理器实战之表复制应用实战 课时13:Endpoint协处理器实战之原理剖析 课时14:Endpoint...

    hbase的java client实例

    本主题将深入探讨如何使用Java客户端API与HBase进行交互,包括集成Spring、MapReduce实例以及协处理器的使用。 首先,让我们从HBase的基础开始。HBase是构建在Hadoop文件系统(HDFS)之上的开源NoSQL数据库,它为非...

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

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 从HBase的集群搭建、HBaseshell操作、java...3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构

    HBase in Action

    HBase协处理器允许在服务器端执行代码,可以用来优化数据处理的效率,增强数据处理能力。这对于希望将业务逻辑下移至存储层,以减少网络传输和提高响应速度的开发者而言,是一个非常有用的功能。 在客户端方面,...

    hbase to elasticsearch

    Hbase本身只有一级索引rowkey,现在通过Hbase coprocessor协处理器把Hbase的数据索引存储到Elasticsearch,从而建立二级索引;ppt中讲述了一些注意事项,挺有用的,希望能有所帮忙!

Global site tag (gtag.js) - Google Analytics