1、自定義協處理器
hbase 版本: 2.x
使用自定義的協處理器需要實現coprocessor, regionobserver, coprocessorservice這三個介面,如下圖:
可以看出協處理器的載入分為靜態載入和動態載入,靜態載入需要修改hbase-site.xml配置檔案,這將對所有的hbase表生效;如果單純的只對某張表生效,需要通過hbase shell命令列方式進行動態的載入。
2、動態載入協處理器
這種方式想要對錶的所有region生效,那麼最好是將jar包放到hdfs上面,如下:
2.1 上傳jar包
hadoop fs -put jar名字 /tmp
2.2 配置協處理器
# 操作表的時候需要關閉表:
hbase> disable 'test1'
# 載入協處理器
hbase> alter 'mytable', method => 'table_att', 'coprocessor' => '/tmp/hbase-solr-1.1-snapshot.jar|com.***.hbase.coprocesser.solrindexcoprocessorobserver|1'
hbase> enable 'mytable' # 開啟表
配置協處理器的結構如下:
hbase> alter 'mytable', method => 'table_att', 'coprocessor' => '①|②|③|④'
解釋下上面各個引數:
①:協處理器jar包路徑,要保證所有的regionserver可讀取到。也可以是本地路徑,不過建議是放在hdfs上。
②:協處理器的完整類名。
③:協處理器優先順序,整數表示。可以為空。
④:傳遞給協處理器的引數,可以為空。
注:各引數間不要有空格。
2.3 檢視表的描述資訊
2.4 解除安裝協處理器
hbase> disable 'mytable' # 禁用表,
hbase> alter 'mytable', method => 'table_att_unset', name => 'coprocessor$1'
hbase> enable 'mytable' # 禁用表後啟用表,
注意① 如果協處理器實現的介面異常,從表對應的regionserver的日誌裡面將看到如下錯誤:
方式1:重啟regionserver
方式2:把jar包重新改名字,重新修改表的協處理器資訊,否則表依然載入的是以前的資訊
HBase協處理器
協處理器分兩種型別,系統協處理器可以全域性匯入region server上的所有資料表,表協處理器即是使用者可以指定一張表使用協處理器。協處理器框架為了更好支援其行為的靈活性,提供了兩個不同方面的外掛程式。乙個是觀察者 observer 類似於關聯式資料庫的觸發器。另乙個是終端 endpoint 動...
Hbase協處理器
hbase作為資料庫最經常被人詬病的特性包括 無法輕易建立 二級索引 難以求和 計數 排序等操作 比如,在舊版本的 0.92 hbase中,統計資料表的行數,需要使用counter方法,執行一次mapreduce job 才能得到。雖然hbase在資料儲存層中整合了mapreduce,能夠有效用於資...
Hbase協處理器
observer masterobserver walobserver observer提供了一些設計好的 函式,每個操作在集群伺服器端都可以被呼叫。endpoint observer 與 endpoint總結 協處理器載入方式 動態載入 sh hbase disable table名 sh hba...