hbase協處理的部署


1.hbaseCoprocessor的簡介

      HBase是一個分佈式的存儲體系,數據按照RowKey分紅不一樣的Region,再分配給RegionServer管理。可是RegionServer只承擔了存儲的功能,若是Region能擁有一部分的計算能力,從而實現一個HBase框架上的MapReduce,那HBase的操做性能將進一步提高。正是爲了解決這一問題,HBase 0.92版本後推出了Coprocessor -- 協處理器,一個工做在Master/RegionServer中的框架,能運行用戶的代碼,從而靈活地完成分佈式數據處理的任務。java

      Coprocessor包含兩個組件,一個是EndPoint(相似關係型數據庫的存儲過程),用以加快特定查詢的響應,另外一個就是Observer(相似關係型數據庫的觸發器)。Observer也分爲幾個類型,其中RegionObserver提供了一組表數據操做的鉤子函數,覆蓋了GetPutScanDelete等操做(一般有prepost兩種狀況,表示在操做發生以前或發生以後),咱們能夠經過重載這些鉤子函數,利用RegionServer實現特定的數據處理需求。數據庫


2.Coprocessors提供了兩種部署方式:

1.    全局部署。把jar包的路徑加入HBASE_CLASSPATH而且修改hbase-site.xml,這樣Observer會對每個表都生效。apache

<property>
<name>hbase.coprocessor.region.classes</name>
 <value>org.apache.hadoop.hbase.coprocessor. BaseRegionObserver </value>
</property>


2.    單表部署。經過HBase Shell修改表結構,加入coprocessor信息。框架

a)      進入HBase Shelldisable你但願加載的表分佈式

b)     經過如下指令激活Observer函數

alter 'table_name', METHOD => 'table_att', 'coprocessor' => ' hdfs://master:9000/HbaseCoprocessor.jar | test.CoprocessorObserverTest |1001'oop

c)      coprocessor對應的格式以|分隔,依次爲:post

  •         jar包的HDFS路徑性能

  •         Observer的主類spa

  •         優先級(通常不用改)

d)     新安裝的coprocessor會自動生成名稱:coprocessor + $ + 序號(可經過describe 'table_name'查看)

e)     由於一張表可能擁有多個coprocessor,卸載須要輸入對應的coprocessor名稱,好比:

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

注:建立協處理器時須要把必要的jar,copy完整。

相關文章
相關標籤/搜索