HBase Thrift Server

通过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.jsSmalltalk等。

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