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官方文檔。