hbase的coprocessor使用(转)】的更多相关文章

http://www.360doc.com/content/13/0320/09/4675893_272623864.shtml…
HBase客户端查询存在的问题 Scan 用Get/Scan查询数据, Filter 用Filter查询特定数据 以上情况只适合几千行数据以及不是很多的列的"小数据". 当表扩展为亿万行及百万列时,在通过网络传递移动大量的数据导致网络拥堵,且客户端需要足够多内存来处理这么大量数据的计算操作,另外,客户端代码也会变的大而复杂. 解决方案 移动计算比移动数据更划算 Coprocessor将运算移动到数据所处的节点. 什么是Coprocessor? 简单来说,Coprocessor是一个框架…
Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionServer上对数据执行自定义计算,而不是在客户端上执行计算. 本文是以上两者的简单实例,使用的环境:环境 jdk1.8 hadoop2.6.5 hbase1.2.4. 1.Endpoint实例  1> 编写适用于protobuf的proto文件,如下,尽量不要带注释,因为编译时可能出现乱码 option…
一.服务端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…
大数据架构-使用HBase和Solr将存储与索引放在不同的机器上 摘要:HBase可以通过协处理器Coprocessor的方式向Solr发出请求,Solr对于接收到的数据可以做相关的同步:增.删.改索引的操作,这样就可以同时使用HBase存储量大和Solr检索性能高的优点了,更何况HBase和Solr都可以集群.这对海量数据存储.检索提供了一种方式,将存储与索引放在不同的机器上,是大数据架构的必须品. 关键词:HBase, Solr, Coprocessor, 大数据, 架构   正如我的之前的…
HBase1. hbase.id记录了集群的唯一标识:hbase.version记录了文件格式的版本号2. split和.corrupt目录在日志分裂过程中使用,以便保存一些中间结果和损坏的日志在表目录下,为该表的每一个region单独创建一个目录,目录的名字为region name的MD5哈希值3. 二级索引方案:a.Coprocessor b.由客户端发起对于主表和索引表的Put.Delete操作的双重操作 Split和Conpact优化 快速写入 1.写入前 预分Region 2.数据写入…
1.Java代码实现 import org.apache.hadoop.hbase.client.coprocessor.AggregationClient; import org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter; import org.apache.hadoop.hbase.coprocessor.AggregateImplementation; /** * <p> * 协处理器统计HBase表数据量…
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.client.coprocessor.Batch; import org.apa…
最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的各种filter过滤器进行筛选,感觉查询效率不太理想,于是考虑建立二级索引的方案. 经过google学习网上前辈们的经验,暂时找到两种可用的方案: 使用Hbase协处理器Coprocessor在写入数据时,创建二级索引表,并将每条数据的索引写入二级索引表中,查询时先根据筛选条件查询二级索引表,获取相…
引言   假设HBase某张表有1000个Region,里面存储着100万行数据,现在需要统计满足某些条件的行数,普通的做法是使用Filter(过滤条件),通过HBase API将满足过滤条件的行数据Scan至客户端之后进行汇总,这需要在HBase RegionServer与Client之间传送大量的数据,占用大量的网络带宽,并影响响应时间.   这是一种典型的“移动数据”的计算方案,即将所有数据传送到计算节点后进行计算,熟悉Hadoop MapReduce的人知道,MR使用的是“移动计算”,即…
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…
1. HBase的存储形式 hbase的内部使用KeyValue的形式存储,其key时rowKey:family:column:logTime,value是其存储的内容. 其在region内大多以升序的形式排列,唯一的时logTime是以降序的形式进行排列. 所以,rowKey里越靠近左边的信息越容易被检索到.其设计时,要考虑把重要的信息放左边,不重要的信息放到右边.这样可以提高查询数据的速度.最重要的提高索引速度的就是设计合适的rowKey. 在做RowKey设计时,请先考虑业务是读比写多,还…
错误如下: Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.exceptions.UnknownProtocolException): org.apache.hadoop.hbase.exceptions.Unkno wnProtocolException: No registered coprocessor service found for name CubeVi…
HBase是Apache Hadoop生态系统中的重要一员,它的海量数据存储能力,超高的数据读写性能,以及优秀的可扩展性使之成为最受欢迎的NoSQL数据库之一.它超强的插入和读取性能与它的数据组织方式有着密切的关系,在逻辑上,HBase的表数据按RowKey进行字典排序, RowKey实际上是数据表的一级索引(Primary Index),由于HBase本身没有二级索引(Secondary Index)机制,基于索引检索数据只能单纯地依靠RowKey.也只有使用RowKey查询数据才能得到非常高…
一.前言 业务使用HBase已经有一段时间了,期间也反馈了很多问题,其中反馈最多的是HBase是否支持SQL查询和二级索引,由于HBase在这两块上目前暂不支持,导致业务在使用时无法更好的利用现有的经验来查询HBase.虽然HBase本身不支持SQL,但业界还是有现成的方案来支持,如Hive.Impala.Phoenix等.众多方案各有各的优势,本文主要对Phoenix作一个大概的介绍. Phoenix中文翻译为凤凰, 其最早是Salesforce的一个开源项目,Salesforce背景是一个搞…
1.二级索引的核心思想是什么?2.二级索引由谁来管理?3.在主表中插入某条数据后,hbase如何将索引列写到索引表中去?4.scan查询的时候,coprocessor钩子的作用是什么?5.在split的时候,索引表在什么时候对数据划分? 本文是以华为二级索引为例: 华为在HBTC 2012上由其高级技术经理Anoop Sam John透露了其二级索引方案,这在业界引起极大的反响,甚至有人认为,如果华为早点公布这个方案,hbase的某些问题早就解决了.其核心思想是保证索引表和主表在同一个regio…
这个是华为的二级索引方案,已经开放源代码了,下面是网上的一篇讲解原理的帖子,发出来和大家共享一下. 经过本人认真阅读了一下代码,发现这个源码仅供参考,想要集成到原有的集群当中是有点儿难度的,它对hbase的源码进行不少的修改. 源码地址:https://github.com/Huawei-Hadoop/hindex 下面来对其方案做一个分析. 1.整体架构 这个架构在Client Ext中设定索引细节,在Balancer中收集信息,在Coprocessor中管理二级索引数据. 2.表创建 在创建…
转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员Ted Yu先生参与了审稿并于给予了肯定.该方案设计之初仅寄希望于通过二级索引提升查询性能,由于在前期架构时充分考虑了通用性以及对复杂条件的支持,在后来的演变中逐渐被剥离出来形成了一个通用的查询引擎.Ted Yu对“查询决策器”表示了关心,他指出类似的组件同时也是Phoenix, Impala用于支持…
转自:http://blog.sina.com.cn/s/blog_4a1f59bf01018apd.html 附hbase如何创建二级索引以及创建二级索引实例:http://www.aboutyun.com/thread-8857-1-1.html 华为二级索引(原理):http://my.oschina.net/u/923508/blog/413129 在HBase中,表格的Rowkey按照字典排序,Region按照RowKey设置split point进行shard,通过这种方式实现的全局…
转自:http://www.aboutyun.com/thread-8391-1-1.html 问题导读: 1.hbase是什么? 2.hbase原理是什么? 3.hbase使用中会遇到什么问题? 4.如何通过eclipse,操作hbase? 5.hbase经常和哪些软件一起使用? .......... hbase从入门到编程 认识hbase 1.hbase简介hbase我们或许已经知道了它是nosql,但是什么是nosql,我们不太清楚,nosql是一种基于列的数据库,而我们的传统数据库则是基…
Hbase 协处理器 Coprocessor 简介 HBase 是一款基于 Hadoop 的 key-value 数据库,它提供了对 HDFS 上数据的高效随机读写服务,完美地填补了 Hadoop MapReduce 仅适于批处理的缺陷,正在被越来越多的用户使用.作为 HBase 的一项重要特性,Coprocessor 在 HBase 0.92 版本中被加入,并广受欢迎.本文假设读者对 HBase 以及 Coprocessor 已经比较熟悉,因此并不打算进详细介绍 HBase Coprocess…
实现 Client 端代码 HBase 提供了客户端 Java 包 org.apache.hadoop.hbase.client.coprocessor.它提供以下三种方法来调用协处理器提供的服务: Table.coprocessorService(byte[]) Table.coprocessorService(Class, byte[], byte[],Batch.Call), Table.coprocessorService(Class, byte[], byte[], Batch.Cal…
环境:cdh5.1.0 启用协处理器方法1. 启用协处理器 Aggregation(Enable Coprocessor Aggregation) 我们有两个方法:1.启动全局aggregation,能过操纵所有的表上的数据.通过修改hbase-site.xml这个文件来实现,只需要添加如下代码: <property> <name>hbase.coprocessor.user.region.classes</name> <value>org.apache.h…
运用hbase好长时间了,今天利用闲暇时间把Hbase的各种查询总结下,以后有时间把协处理器和自定义File总结下. 查询条件分为: 1.统计表数据 2,hbase 简单分页 3,like 查询 4 ,  AND 查询 5 ,  OR 查询 6  ,rowkey 的  in 查询 7 , 正则查询 上代码先. package com.query; import java.io.IOException; import java.util.ArrayList; import java.util.It…
一. 背景二. 什么是HBase的协处理器三. HBase协处理器同步数据到Solr四. 添加协处理器五. 测试六. 协处理器动态加载 一. 背景 在实际生产中,HBase往往不能满足多维度分析,我们能想到的办法就是通过创建HBase数据的二级索引来快速获取rowkey,从而得到想要的数据.目前比较流行的二级索引解决方案有Lily HBase Indexer,Phoenix自带的二级索引,华为Indexer,以及360的二级索引方案.上面的目前使用比较广泛的应该是Lily HBase Index…
背景:对于其他数据存储系统来说,统计表的行数是再基本不过的操作了,一般实现都非常简单:但对于HBase这种key-value存储结构的列式数据库,统计 RowCount 的方法却有好几种不同的花样,并且执行效率差别巨大!下面来研究下吧~ 测试集群:HBase1.2.0 - CDH5.13.0 四台服务器 注:以下4种方法效率依次提高 一.hbase-shell的count命令这是最简单直接的操作,但是执行效率非常低,适用于百万级以下的小表RowCount统计! hbase> count 'ns1…
hbase 数据获取方式 直接根据 rowkey 查找,速度最快 scan,指定 startrowkey.endrowkey 和 limit获取数据,在 rowkey 设计良好的情况下,效率也不错 全表扫,强烈不推荐这种做法,效率极差,在线业务不用考虑这种方式 hbase 数据排序怎么做? 我觉得这个分两种情况,一是数据量比较少,业务上每次拉取所有的数据,可以在客户端做排序,二是数据比较多,需要分页,这种情况下客户端做显然不合适,因为要从服务器拉取所有数据,排序完成,获取某一页,剩余的数据全都不…
背景 HBase统计 RowCount 的方法有好几种,并且执行效率差别巨大,以下3种方法效率依次提高.   一.hbase-shell的count命令 这是最简单直接的操作,但是执行效率非常低,适用于百万级以下的小表RowCount统计. 此操作可能需要很长时间,来运行计数MapReduce作业.默认情况下每1000行显示当前计数,计数间隔可自行指定. 默认情况下在计数扫描上启用缓存,默认缓存大小为10行. 行数为 3000W 的表测试结果,在默认INTERVAL为1000行时花了80分钟左右…
HBase二级索引.读写流程 一.HBse二级索引方案 1.1 基于Coprocessor方案 1.2 Phoenix二级索引特点 1.3 Phoenix 二级索引方案 二.HBase读写流程 2.1 HBase写数据流程 2.2 HBase读数据流程 相关优秀博文案例: 博客园:花未全开*月未圆:HBase的二级索引 博客园:small_k:hbase实践之协处理器Coprocessor 简书:5c7b85ab9023:Hbase使用Coprocessor构建二级索引 CSDN:菜鸟级的IT之…
package com.zy; import java.io.IOException; import org.apache.commons.lang.time.StopWatch; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.cli…