一、介紹
hbase作為列儲存的資料庫,很多關於統計的函式沒有直接快速的計算,因此hbase提供了協處理器的功能,協處理提供了使用者在region伺服器端插入自己的**,從而實現特定功能的權利。通過使用者自寫的協處理器,使用者可以建立二級索引、完成行數量的統計等功能。
二、解釋
1、協處理器的分類:
協處理器主要分為兩類:觀察者模式(obverser)和終端(endpoint)兩種,這兩種寫出器都是coprocessor類,從而實現協處理器框架的:
(1)觀察者模式
該模式類似於關係型資料庫中的觸發器,即使用者可以規定在客戶端或者其他進行某一種動作時,觸發乙個使用者的自定義的功能,從而實現一些其他功能。因為hbase無法直接建立二級索引,但是我們可以通過在觀察者模式中,在每次插入一條資料項時通過自定義功能實現二級索引。
(2)終端模式
該模式類似於關係型資料庫中的儲存過程,使用者可以通過rpc請求觸發終端中的**,從而實現某些功能。例如可以在終端中實現多某些錶行的統計。
2、協處理器許可權
協處理器也存在執行順序上的許可權問題,在coprocessor.priority函式中定了協處理器的級別:system、user。
(1)system:系統級別的協處理器許可權要大於使用者級別的協處理器,因此在執行協處理器的過程中,系統級協處理器先別執行,而使用者級的協處理器後備執行。
(2)相同級別的協處理器都帶有乙個序號,以辨別同級別協處理器的執行順序。
3、協處理器載入
協處理器的載入只要有兩種方式:
(1)從配置中載入
使用者可以在hbase-site.xml檔案中配置協處理器類,通過在其中配置協處理器類的位置。在配置檔案中配置項的順序很重要,因此在配置項中的順序則是協處理器載入的順序,也就是協處理器執行的順序。並且通過配置載入的協處理器肯定都是每一張表都會被應用上。在該配置中有幾個配置選項,可以規定協處理器監聽的位置:
hbase.coprocessor.master.classes master處理,在一些master級別的操作,如建立表、刪除表等時會觸發該處理器。
hbase.coprocessor.region.classes region處理,在region級別的操作,例如插入、刪除、獲取資料的操作時可以出發這些函式。
hbase.coprocessor.wal.classes wal日誌檔案處理,在wal操作過程中的協處理器觸發函式。
(2)從表描述中載入
該功能是在表的描述中為其新增乙個協處理器的描述,從而將協處理器的**傳遞到region端,但是該種方法只能為特定的某一張表新增使用者定義的協處理器。
使用者可以通過htabledescriptor.setvalue()方法新增協處理器
key值:key值必須以 coprocessor開頭,通過$+數字的規定該協處理器的序號。
value值:value值有三部分組成,每一部分有 | 進行分分割,第一部分為類的路徑,第二部分為協處理器所在的類,第三部分為協處理器的等級
例子:
htabledescriptor.setvalue("coprocessor$1","hdfs://localhost:9000/user/test/test.jar|coprocessor.coprocessortest|"+coprocessor.user)
4、協處理器系統
所有的協處理器都繼承自同乙個類coprecessor類。因此所有的協處理器都具有相同的屬性:
(1)start(coprocessorenviroment env) / stop(coprocessorenviroment env)
在協處理器的生成週期中,start函式啟動協處理器,二stop函式則停止協處理器功能。
(2)協處理器的狀態
在協處理器中定義了乙個協處理器的所有的狀態,並且所有的狀態都封裝在乙個列舉類 coprocessor.state 中:
uninstalled 協處理器的最初狀態,沒有環境,也沒有被初始化
installed 例項裝在了他的環境引數
starting 協處理器開始將要工作,也就是start()函式將要被呼叫了
active start函式已經被呼叫
stopping stop函式將要被呼叫之前的狀態
stopped stop 函式被呼叫
三、總結
該片文章先講述了協處理器的特點,如果有什麼不正確的地方,希望能夠指出
hbase 協處理器 部署 hbase 協處理器
1 自定義協處理器 hbase 版本 2.x 使用自定義的協處理器需要實現coprocessor,regionobserver,coprocessorservice這三個介面,如下圖 可以看出協處理器的載入分為靜態載入和動態載入,靜態載入需要修改hbase site.xml配置檔案,這將對所有的hb...
HBase協處理器
協處理器分兩種型別,系統協處理器可以全域性匯入region server上的所有資料表,表協處理器即是使用者可以指定一張表使用協處理器。協處理器框架為了更好支援其行為的靈活性,提供了兩個不同方面的外掛程式。乙個是觀察者 observer 類似於關聯式資料庫的觸發器。另乙個是終端 endpoint 動...
Hbase協處理器
hbase作為資料庫最經常被人詬病的特性包括 無法輕易建立 二級索引 難以求和 計數 排序等操作 比如,在舊版本的 0.92 hbase中,統計資料表的行數,需要使用counter方法,執行一次mapreduce job 才能得到。雖然hbase在資料儲存層中整合了mapreduce,能夠有效用於資...