1. 程式人生 > >hbase協處理器--建立endpoint協處理器

hbase協處理器--建立endpoint協處理器

下載hbase-source之後,裡面有相應的原始碼,可以找到RowCountEndpoint.java,ExampleProto.java等一系列程式碼。通過閱讀原始碼以及其中的註釋,我們可以知道,Hbase的很多的功能都是通過protobuf這個工具來生成程式碼,尤其是其中的RPC呼叫的工作,主要都是通過protobuf軟體生成。

參看Roccount.java的程式碼,我們發現,一個協處理器必須要繼承ExampleProto,coprocessor,coprocessorService三個類,其中ExampleProto是定義自己的RPC呼叫怪反,而其中兩個是完成與hbase coprocessor框架融合等作用。一個自定義的協處理器,只要實現自己的的RPC呼叫規則,然後繼承該三大類,就能完成endpoint的協處理器功能。

在這種想法的基礎上,模仿RowCountEndpoint的程式碼,嘗試從hbase中取出其中的資料,即通過endpoint協處理完成對資料的讀取操作。

在這個過程中,先編寫自己的.proto檔案,安裝protobuf.2.5.0軟體,通過命令列輸入protoc -I=.  --java_out=.  example.proto,生成自己的RPC呼叫規範,然後建立自己的協處理器。

在操作的過程主要出現問題:

1,過多的RPC連線,超過了最大的RPC連線數;剛開始嘗試設定zookeeper的最大連線數,但是解決問題有限,然後閱讀自己的協處理器程式碼,發現其中主要是每次得到一個數據的時候,都重新構造了table,導致RPC連線過度,改掉程式碼之後,問題解決。