HBase增強版通過Thrift支援多語言訪問。
前提條件
已擷取叢集串連地址查看叢集串連地址。
背景資訊
Thrift1介面不支援許可權認證,且單個Core節點支援的串連數為1000,請注意串連數。
Thrift2隻支援HTTPClient訪問,並且需要添加使用者名稱和密碼。
Thrift的使用可以參考Apache Thrift的官方文檔。
操作步驟
下載Thrift安裝包。
說明一些語言提供了管理依賴的方法,可以遵循這些語言的使用習慣來安裝thrift,如Python語言可以通過
pip install thrift
來安裝,Go語言可以直接在代碼裡import {"github.com/apache/thrift/lib/go/thrift"}
。產生對應語言的介面定義檔案。
解壓步驟1已下載的
thrift-0.12.0.tar.gz
包,請參考thrift安裝指導。使用命令列進入已解壓的thrift-0.12.0檔案中執行如下命令產生介面定義檔案。
thrift --gen <language> Hbase.thrift
例如:
thrift --gen php Hbase.thrift thrift --gen cpp Hbase.thrift thrift --gen py Hbase.thrift
構造用戶端訪問HBase增強版。
說明HBase增強版Thrift伺服器端的transport層使用的是HTTP,因此在構造用戶端時,需要thrift中的ThttpClient,並且在ACL開啟的情況下,需要在ThttpClient上添加兩個header來向伺服器傳輸使用者名稱和密碼進行認證。
Thrift在每個語言實現的ThttpClient都有加定製header的函數。
以Python語言為例,用以下方法構造用戶端和設定串連串/使用者名稱密碼。
# -*- coding: utf-8 -*- # 以下兩個模組可以通過 pip install thrift 安裝獲得 from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient # 下面的模組通過 thrift --gen py hbase.thrift 來產生 from hbase import THBaseService from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan # 串連地址 url = "http://host:9190" transport = THttpClient.THttpClient(url) headers = {} # 使用者名稱 headers["ACCESSKEYID"]="testuser"; # 密碼 headers["ACCESSSIGNATURE"]="password" transport.setCustomHeaders(headers) protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) client = THBaseService.Client(protocol) transport.open() # 具體操作,最後close串連 transport.close()
相關資源
所有的Demo的完整的代碼都已上傳至GitHub,包括該語言thrift定義檔案,以及所依賴的library(某些語言適用)。您可以直接下載Github上相應語言的代碼構造用戶端訪問HBase增強版。
更多語言請參見Thrift官方文檔。