05分布式NOSQL HBASE - Coprocessor协调器

来源:互联网 发布:centos 7 mount yum 编辑:程序博客网 时间:2024/06/05 08:29


(原文地址:http://blog.csdn.net/codemosi/article/category/2777041,转载麻烦带上原文地址。hadoop hive hbase mahout storm spark kafka flume,等连载中,做个爱分享的人奋斗

1 那么问题又来了  ????
1:如果要对HBase的User表,做一些sum,orderby等常用的聚合怎么搞。1:如果javaapi 全部读出来,表太大时显然这种方案不合适,2,mapreduce 分布式的批量读出再算,但是当数据小的时候,mr任务要消耗的资源大,有点牛刀。
        为解决这种 sum,orderby等常用的聚合聚合操作的,HBase的org.apache.hadoop.hbase.coprocessor 协处理器机智,提供在服务端region运行代码的机制,的解决方案,如GET 操作,直接在服务端执行。并不需要把结果返回回来。中国山东找蓝翔

2:假设我们在user表执行DELETE 或者GET等操作之后,要做操作日志
       HBase的org.apache.hadoop.hbase.coprocessor 协处理器也能处理这样的需求。

2 协处理器概述
HBase有全表,和单表两种作用域的协处理器,以及 observer和endpoint两种调用方式的协处理器,observer为hbase 的GET,PUT,SCAN,DELETE等操作提供了Hook钩子,类似于onClick do,适合在表的某些操作前后的需求。endpoint是一个服务端的方法,我们要使用时,通过rpc可以直接调用,适合做聚合。

3.1 协处理器observer模式关键API

3.2 协处理器endpoint(RPC)模式关键API
    3.2.1服务端类关键接口
    //接受到请求后,真正执行的方法。
    实现com.google.protobuf.Service里的接口

   //初始化获取env对象。
    public void start(CoprocessorEnvironment env) throws IOException {}
   //结束时关闭相关资源
    public void stop(CoprocessorEnvironment env) throws IOException{}

    3.2.2客户端端类关键接口
    //发起请求
    coprocessorService(java.lang.Class, byte[], byte[], org.apache.hadoop.hbase.client.coprocessor.Batch.Call)]coprocessorService[/url](Class<T> service, byte[] startKey, byte[] endKey, org.apache.hadoop.hbase.client.coprocessor.Batch.Call<T,R> callable)

    //执行rpc请求的时候,真正执行的代码,在服务端执行。
    public Long call(TestEndpoint.CountService counter)


4.1 协处理器observer模式程序
  有空再补充
4.2 协处理器endpoint(RPC)模式程序

    有空再补充


0 0
原创粉丝点击