全部產品
Search
文件中心

E-MapReduce:HBase Thrift Server

更新時間:Jan 27, 2025

通過HBase Thrift Server,您可以方便地使用多種程式設計語言與EMR HBase叢集進行互動,滿足不同開發環境的需求。使用Thrift Server,您無需依賴Java用戶端即可高效訪問和操作HBase中的資料。

背景資訊

HBase Thrift Server是基於Apache Thrift開發的一種服務,旨在為多語言開發提供高效的訪問HBase的能力。Thrift是一個可伸縮的跨語言服務RPC架構。當前支援的程式設計語言包括C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Go、Cocoa、JavaScript、Node.js和Smalltalk等。

HBase Thrift Server特性

預設配置:EMR HBase叢集預設在主節點上啟動Thrift Server服務,服務連接埠為9091。

高可用:在高可用模式下,EMR HBase叢集會在三個主節點上啟動Thrift Server。您可以根據需求實現自訂的負載平衡策略,以將請求均勻分配到多個Thrift Server執行個體上。

使用HBase Thrift Server

已建立包含HBase服務的資料服務(DataServing )或自訂(Custom)情境的叢集,詳情請參見建立叢集

本文以Python語言為例,使用ThriftServer v1版本,通過將HBase配置中的hbase.thrift.server.version設定為v1,並重啟ThriftServer,以實現版本切換至v1

  1. 檢查並修改HBase配置。

    E-MapReduce控制台的HBase服務的配置頁簽,搜尋並查看hbase.thrift.server.version的參數值:

    • 如果參數值為v1,則可直接進行下一步操作。

    • 如果參數值不是v1,則需先將其修改為v1,並根據提示燈進行相應操作以確保其生效,然後再執行下一步。

      image

  2. 安裝依賴。

    1. 登入到EMR HBase叢集的Master節點,詳情請參見登入叢集

    2. 執行以下命令,安裝Python和所需的Thrift庫。

      pip2.7 install hbase-thrift
  3. (可選)建立表。

    以下為您提供簡單的建立適合後續Python指令檔的表資訊,您可以直接使用該樣本。

    1. 使用HBase Shell串連HBase,詳情請參見使用HBase Shell

    2. 執行以下命令,建立一個表名為test_table,列簇為cf的表。

      create 'test_table','cf'
    3. 執行以下命令,向表中寫入資料。

      put 'test_table','test_rowkey','cf:q','v1'
  4. 建立Python指令碼。

    建立一個Python指令檔hbase_thrift_test.py,並輸入以下內容。代碼中的test_table為表名,test_rowkey為行鍵,需要您根據實際情況進行修改。如果使用前一步建立的表資訊,則可以直接使用,無需進行修改。

    #! /usr/bin/env python2.7
    #coding=utf-8
    from thrift import Thrift
    from thrift.transport import TSocket, TTransport
    from thrift.protocol import TBinaryProtocol
    from hbase import Hbase
    
    socket = TSocket.TSocket('master-1-1', 9091)
    socket.setTimeout(60000)
    transport = TTransport.TBufferedTransport(socket)
    transport.open()
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Hbase.Client(protocol)
    result = client.getRow("test_table", "test_rowkey")
    for r in result:
        print 'The rowkey is ', r.row
        print 'The value is ', r.columns.get('cf:q').value
    socket.close()
    
  5. 執行Python指令碼。

    運行以下命令,執行指令碼並訪問HBase資料。

    python2.7 hbase_thrift_test.py

    運行成功後,您將看到類似以下輸出資訊。

    The rowkey is  test_rowkey
    The value is  v1