HBase Endpoint】的更多相关文章

引言   假设HBase某张表有1000个Region,里面存储着100万行数据,现在需要统计满足某些条件的行数,普通的做法是使用Filter(过滤条件),通过HBase API将满足过滤条件的行数据Scan至客户端之后进行汇总,这需要在HBase RegionServer与Client之间传送大量的数据,占用大量的网络带宽,并影响响应时间.   这是一种典型的“移动数据”的计算方案,即将所有数据传送到计算节点后进行计算,熟悉Hadoop MapReduce的人知道,MR使用的是“移动计算”,即…
概述 参考博客(http://blog.csdn.net/carl810224/article/details/52224441)编写EndPoint协处理器,编写完成后使用Maven打包(使用assembly插件,指定descriptorRefs值为jar-with-dependencies,将依赖的jar包也加进来),再将jar包上传到HDFS上,然后使用添加协处理器到指定表: disable 'test_table' alter 'test_table',METHOD=>'table_at…
1.简介 不同于Observer协处理器,EndPoint由于需要同region进行rpc服务的通信,以及客户端出数据的归并,需要自行实现客户端代码. 基于[How to] 使用HBase协处理器---Endpoint服务端的实现这篇文章,我们继续实现其客户端代码. 2.客户端代码实现方式介绍 目前基于HBase1.0.0的版本客户端一共可以基于以下五个API来实现: 1. Table.coprocessorService(byte[]) 基于单个region的服务请求,参数为rowKey值,被…
1.简介 前篇文章[How to] 使用HBase协处理器---基本概念和regionObserver的简单实现中提到了两种不同的协处理器,并且实现了regionObserver. 本文将介绍如何使用EndPoint协处理器类型. 与Observer类型不同的是,Endpoint协处理器需要与服务区直接通信,服务端是对于Protobuf Service的实现,所以两者直接会有一个机遇protocl的RPC接口,客户端和服务端都需要进行基于接口的代码逻辑实现. 2.Endpoint的服务端实现 如…
Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionServer上对数据执行自定义计算,而不是在客户端上执行计算. 本文是以上两者的简单实例,使用的环境:环境 jdk1.8 hadoop2.6.5 hbase1.2.4. 1.Endpoint实例  1> 编写适用于protobuf的proto文件,如下,尽量不要带注释,因为编译时可能出现乱码 option…
阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇,我们讲述了HBase的数据模型相关操作的下部分.   下面我们开始介绍HBase的协处理器部分. 介绍 一:介绍 从0.92版本开始,HBase加入了协处理器(coprocessors),利用协处理器,用户可以编写运行在 HBase Server 端的代码.可以实现“二级索…
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分.一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入H…
一.服务端1.安装Protobuf2.RPC proto 定义文件:Examples.protooption java_package = "org.apache.hadoop.hbase.coprocessor.example.generated";option java_outer_classname = "ExampleProtos";option java_generic_services = true;option java_generate_equals…
文章来源:http://www.open-open.com/lib/view/open1421501717312.html 实现目的: 由于hbase基于行健有序存储,在查询时使用行健十分高效,然后想要实现关系型数据库那样可以随意组合的多条件查询.查询总记录数.分页等就比较麻烦了.想要实现这样的功能,我们可以采用两种方法: 使用hbase提供的filter, 自己实现二级索引,通过二级索引 查询多符合条件的行健,然后再查询hbase. 第一种方法不多说了,使用起来很方便,但是局限性也很大,hba…
HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了通过 Thrift.Rest 实现Web访问的API. so 决定开发基于.net的 sdk,通过其提供的 rest webAPI 来访问 hbase, 其中c#与Java的数据交互过程采用protobuf协议. 目录: 参考资料 基本原理 c#.java数据交互 hbase filter 实体 W…
hbase提供了类似于触发器的组件observer,类似于存储过程的endpoint. hbase中的observer分别三类,MasterObserver.RegionObserver.WALObserevr 使用java代码也可以达到相同的效果,但是服务器端的observer相对是比较高效的 一.自定义obserevr 1.1继承BaseMasterObserver,重写其相应的方法 public class MyObserver extends BaseMasterObserver{ pr…
Sun wei  Sat, Feb 28 2015 3:07 AM Apache HBase是目前非常流行的NoSQL数据库,通过HDFS+Zookeep+Master+Region Server的架构避免了单点故障具有很高的可靠性.在Azure HDInsight中的HBase也提供了相应的功能,通过Azure Storage来代替HDFS并提供了3个zookeeper及在多个workernode上的region server,并提供每月99.9%的SLA.但是对于一些更苛刻的场景,用户还需要…
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分.一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入H…
说明:类似于RDBMS中触发器,允许用户在region服务器上运行自己的代码,在客户端用户不用关心操作具体在哪进行 使用场景:权限控制,回调函数(钩子函数).扫描统计等 主要类:observer和endpoint observer:类似触发器,回调函数在特定事件发生时执行 endpoint:类似数据库存储过程, Coprocessor:定义了协处理器的基本约定,所有协处理器必须实现Coprocessor类 协处理器加载:可以在hbase-site.xml中配置或者通过表描述符加载 eg:使用配置…
Coprocessor是HBase 0.92.0引入的特性.使用Coprocessor.能够将一些计算逻辑下推到HBase节点,HBase由一个单纯的存储系统升级为分布式数据处理平台. Coprocessor分为两种:Observer和Endpoint. Observer能改动扩展已有的client操作功能.而Endpoint能引入新的client操作. Observer Observer的作用类似于数据库的触发器或者AOP中的advice.下图为Put操作添加Observer,当中1-2-4-…
HBase Coprocessor 剖析与编程实践 1.起因(Why HBase  Coprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和.计数.排序等操作.比如,在旧版本的 (<0.92)Hbase中,统计数据表的总行数,需要使用Counter方法,执行一次MapReduce Job才能得到.虽然HBase在数据存储层中集成了MapReduce,能够有效用于数据表的分布式计算.然而在很多情况下,做一些简单的相加或者聚合 计算的时候,如…
Hbase索引表的结构 Hbase Rowkey 设计 Hbase Filter Hbase二级索引 Hbase索引表的结构 在HBase中,表格的Rowkey按照字典排序,Region按照RowKey设置split point进行shard,通过这种方式实现的全局.分布式索引,成为了其成功的最大的砝码 每一个索引建立一个表,然后依靠表的row key来实现范围检索.row key在HBase中是以B+ tree结构化有序存储的,所以scan起来会比较效率.单表以row key存储索引,colu…
HBase在0.92之后引入了coprocessors,提供了一系列的钩子,让我们能够轻易实现访问控制和二级索引的特性.下面简单介绍下两种coprocessors,第一种是Observers,它实际类似于触发器,第二种是Endpoint,它类似与存储过程.由于这里只用到了Observers,所以只介绍Observers,想要更详细的介绍请查阅(https://blogs.apache.org/hbase/entry/coprocessor_introduction).observers分为三种:…
Coprocessor方式二级索引 1. Coprocessor提供了一种机制可以让开发者直接在RegionServer上运行自定义代码来管理数据.通常我们使用get或者scan来从Hbase中获取数据,使用Filter过滤掉不需要的部分,最后在获得的数据上执行业务逻辑.但是当数据量非常大的时候,这样的方式就会在网络层面上遇到瓶颈.客户端也需要强大的计算能力和足够大的内存来处理这么多的数据,客户端的压力就会大大增加.但是如果使用Coprocessor,就可以将业务代码封装,并在RegionSer…
hbase.tmp.dir \({java.io.tmpdir}/hbase-\){user.name} 本地文件系统上的临时目录.将'/tmp'改为其他可以持久保存文件的位置,通常能够解决java.io.tmpdir.'/tmp'目录在机器重启后将会被清空. hbase.rootdir \({hbase.tmp.dir}/hbase</value> <description>该目录被region server共享并且用来保存HBase的持久化数据.这个URL应该完全按照文件系统模…
1.建表高级属性 建表过程中常用的shell命令 1.1 BLOOMFILTER 默认是 NONE 是否使用布隆过虑及使用何种方式,布隆过滤可以每列族单独启用 使用HColumnDescriptor.setBloomFilterType(NONE|ROW|ROWCOL)对列族单独启用布隆 - Default = ROW 对行进行布隆过滤 - 对 ROW,行键的哈希在每次插入行时将被添加到布隆 - 对 ROWCOL,行键 + 列族 + 列族修饰的哈希将在每次插入行时添加到布隆 使用方法: crea…
进入HBase客户端命令操作界面    $ bin/hbase shell 查看帮助命令        hbase(main):001:0> help 查看当前数据库中有哪些表        hbase(main):002:0> list 创建一张表        hbase(main):003:0>  create 'student','info' 向表中存储一些数据hbase(main):004:0> put 'student','1001','info:name','Thom…
HBASE SHELL命令的使用 在hbase shell客户端有许多的操作命令,今天回顾并且总结一二,希望和广大读者共同进步,并且悉心聆听你们的意见.在此的hbase版本是:HBase 1.2.0-cdh5.10.0. HBASE SHELL命令总结如下: hbase(main):001:0> help HBase Shell, version 1.2.0-cdh5.10.0, rUnknown, Fri Jan 20 12:13:18 PST 2017 Type 'help "COMM…
HBase是Apache Hadoop生态系统中的重要一员,它的海量数据存储能力,超高的数据读写性能,以及优秀的可扩展性使之成为最受欢迎的NoSQL数据库之一.它超强的插入和读取性能与它的数据组织方式有着密切的关系,在逻辑上,HBase的表数据按RowKey进行字典排序, RowKey实际上是数据表的一级索引(Primary Index),由于HBase本身没有二级索引(Secondary Index)机制,基于索引检索数据只能单纯地依靠RowKey.也只有使用RowKey查询数据才能得到非常高…
1.简介 HBase备份的方法在[How to]HBase集群备份方法文章中已经有些介绍,但是这些方法都不是HBase本身的特性在支持,都是通过MR计算框架结合HBase客户端的方式,或者直接拷贝HBase的底层hdfs数据的方式进行备份的,但从操作上来说也比较繁琐复杂,数据完整性和及时性上也做的并不是很好. 本文介绍另外一种集群间的数据自动备份特性,这个特性是HBase的内部特性,用户数据备份和数据容灾和集群功能划分. 数据容灾可以认为只是为了数据的保存的措施,除此之外我们也可以灵活使用这种机…
一.前言 业务使用HBase已经有一段时间了,期间也反馈了很多问题,其中反馈最多的是HBase是否支持SQL查询和二级索引,由于HBase在这两块上目前暂不支持,导致业务在使用时无法更好的利用现有的经验来查询HBase.虽然HBase本身不支持SQL,但业界还是有现成的方案来支持,如Hive.Impala.Phoenix等.众多方案各有各的优势,本文主要对Phoenix作一个大概的介绍. Phoenix中文翻译为凤凰, 其最早是Salesforce的一个开源项目,Salesforce背景是一个搞…
一:问题由来 1.举例 有A列与B列,分别是年龄与姓名. 如果想通过年龄查询姓名. 正常的检索是通过rowkey进行检索. 根据年龄查询rowkey,然后根据rowkey进行查找姓名. 这样的效率不高,因为要两次scan. 2.建议有一张索引表. 二:HBase的二级索引 1.讲解 rowkey是uid+ts 11111_20161126111111: 这个rowkey方便查询某一uid的某一个时间段内的数据 问题: 查询某一时间段内所有用户的数据:按照时间 索引表 rowkey:ts+uid…
Coprocessors 之前我们的filter都是在客户端定义,然后传到服务端去执行的,这个Coprocessors是在服务端定义,在客户端调用,然后在服务端执行,他有点儿想我们熟悉的存储过程,传一些参数进去,然后进行我们事先定义好的操作,我们常常用它来做一些比如二次索引啊,统计函数什么的,它也和自定义filter一样,需要事先定好,然后在hbase-env.sh中的HBASE_CLASSPATH中指明,就像我的上一篇中的写的那样. Coprocessors分两种,observer和endpo…
协处理器—Coprocessor 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hbase 中,统计数据表的总行数,需 要使用 Counter 方法,执行一次 MapReduce Job 才能得到.虽然 HBase 在数据存储层中集成 了 MapReduce,能够有效用于数据表的分布式计算.然而在很多情况下,做一些简单的相 加或者聚合计算的时候,如果直接将计算过程放置在 server 端,…
HBase是什么 HBase构建在 HDFS 之上的分布式列式键值存储系统.HBase内部管理的文件全部存储在HDFS中. HBase VS HDFS HDFS适合批处理场景 不支持数据随机查找 不适合增量数据处理 不支持数据更新 HBase VS RDBMS 范式化和反范式化事务(单行:多行ACID)索引(RowKey: 健全索引) RDBMS的优点 SQL 索引 事务 轻量 久经考验 RDBMS的缺陷 高并发读写的瓶颈 可扩展性的限制 事务一致性的负面影响 列式存储 列式存储的基础:对于特定…