1. 程式人生 > >HBase協處理器

HBase協處理器

協處理器分兩種型別,系統協處理器可以全域性匯入region server上的所有資料表,表協處理器即是使用者可以指定一張表使用協處理器。協處理器框架為了更好支援其行為的靈活性,提供了兩個不同方面的外掛。一個是觀察者(observer),類似於關係資料庫的觸發器。另一個是終端(endpoint),動態的終端有點像儲存過程。

1.觀察者(Observer)

觀察者的設計意圖是允許使用者通過插入程式碼來過載協處理器框架的upcall方法,而具體的事件觸發的callback方法由HBase的核心程式碼來執行。協處理器框架處理所有的callback呼叫細節,協處理器自身只需要插入新增或者改變的功能。

以HBase0.92版本為例,它提供了三種觀察者介面:

  • RegionObserver:提供客戶端的資料操縱事件鉤子:Get、Put、Delete、Scan等。
  • WALObserver:提供WAL相關操作鉤子。
  • MasterObserver:提供DDL-型別的操作鉤子。如建立、刪除、修改資料表等。

2.終端(Endpoint)

終端是動態RPC外掛的介面,它的實現程式碼被安裝在伺服器端,從而能夠通過HBase RPC喚醒。客戶端類庫提供了非常方便的方法來呼叫這些動態介面,它們可以在任意時候呼叫一個終端,它們的實現程式碼會被目標region遠端執行,結果會返回到終端。使用者可以結合使用這些強大的外掛介面,為HBase新增全新的特性。終端的使用,如下面流程所示:

  1. 定義一個新的protocol介面,必須繼承CoprocessorProtocol.
  2. 實現終端介面,該實現會被匯入region環境執行。
  3. 繼承抽象類BaseEndpointCoprocessor.
  4. 在客戶端,終端可以被兩個新的HBase Client API呼叫 。單個region:HTableInterface.coprocessorProxy(Class<T> protocol, byte[] row) 。rigons區域:HTableInterface.coprocessorExec(Class<T> protocol, byte[] startKey, byte[] endKey, Batch.Call<T,R> callable)