欢迎投稿

今日深度:

Hbase 协处理器,

Hbase 协处理器,


Hbase 协处理器 :批处理的,等价于存储过程或者触发器

[Observer]
        观察者,类似于触发器,基于事件。发生动作时,回调相应方法。触发器,基于事件激活的。
        RegionObserver        //RegionServer区域观察者
        MasterObserver        //Master节点。
        WAlObserver            //

[Endpoint]
        终端,类似于存储过程,客户端调用。

 

1.加载(定义之后再写入hbase-site.xml)

[hbase-site.xml]
		<property>
			<name>hbase.coprocessor.region.classes</name>
			<value>coprocessor.RegionObserverExample,         
               coprocessor.AnotherCoprocessor</value>
		</property>
		<property>
			<name>hbase.coprocessor.master.classes</name>
			<value>coprocessor.MasterObserverExample</value>
		</property>
		<property>
			<name>hbase.coprocessor.wal.classes</name>
			<value>coprocessor.WALObserverExample, bar.foo.MyWALObserver</value>
		</property>

2.自定义观察者

package com.mao.hbase;

import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.coprocessor.ObserverContext;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.RegionObserver;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.wal.WALEdit;

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

/**
 * 自定义区域观察者
 * hbase 2.0 之前的版本是继承 baseRegionObserver 类
 * hbase 2.0 之后是实现如下两个类的接口
 * implements RegionObserver, RegionCoprocessor
 */
public class MyRegionObserver implements RegionObserver, RegionCoprocessor {

    private void outInfo(String str){
        try {
            FileWriter fw = new FileWriter("/home/admin/coprocessor.txt",true);
            fw.write(str + "\r\n");
            fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void start(CoprocessorEnvironment e) {
         outInfo("MyRegionObserver.start()");
    }

    public void preOpen(ObserverContext<RegionCoprocessorEnvironment> e)  {
        outInfo("MyRegionObserver.preOpen()");
    }

    public void postOpen(ObserverContext<RegionCoprocessorEnvironment> e) {
        outInfo("MyRegionObserver.postOpen()");
    }

    @Override
    public void preGetOp(ObserverContext<RegionCoprocessorEnvironment> e, Get get, List<Cell> results) throws IOException {
        String rowkey = Bytes.toString(get.getRow());
        outInfo("MyRegionObserver.preGetOp() : rowkey = " + rowkey);
    }

    public void postGetOp(ObserverContext<RegionCoprocessorEnvironment> e, Get get, List<Cell> results) throws IOException {
        String rowkey = Bytes.toString(get.getRow());
        outInfo("MyRegionObserver.postGetOp() : rowkey = " + rowkey);
    }

    public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, Durability durability) throws IOException {
        String rowkey = Bytes.toString(put.getRow());
        outInfo("MyRegionObserver.prePut() : rowkey = " + rowkey);
    }

    public void postPut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, Durability durability) throws IOException {
        String rowkey = Bytes.toString(put.getRow());
        outInfo("MyRegionObserver.postPut() : rowkey = " + rowkey);
    }

    public void preDelete(ObserverContext<RegionCoprocessorEnvironment> e, Delete delete, WALEdit edit, Durability durability) throws IOException {
        String rowkey = Bytes.toString(delete.getRow());
        outInfo("MyRegionObserver.preDelete() : rowkey = " + rowkey);
    }

    public void postDelete(ObserverContext<RegionCoprocessorEnvironment> e, Delete delete, WALEdit edit, Durability durability) throws IOException {
      String rowkey = Bytes.toString(delete.getRow());
        outInfo("MyRegionObserver.postDelete() : rowkey = " + rowkey);
    }
}

3.导出jar包。
    
4.复制jar到共享目录,分发到jar到hbase集群的hbase lib目录下.
        [/soft/hbase/lib]

www.htsjk.Com true http://www.htsjk.com/hbase/42360.html NewsArticle Hbase 协处理器, Hbase 协处理器 :批处理的,等价于存储过程或者触发器 [Observer]         观察者,类似于触发器,基于事件。发生动作时,回调相应方法。触发器,基于事件激活的。...
相关文章
    暂无相关文章
评论暂时关闭