本文为您介绍HBase Thrift Server,以及通过示例介绍如何访问EMR HBase集群。

背景信息

Thrift是一个可伸缩,跨语言服务RPC框架,集成了强大的软件堆栈及代码生成引擎,使得各种语言做到无障碍,高效通信,目前支持C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Go、Cocoa、JavaScript、Node.js和Smalltalk等开发语言。

HBase为了多语言的开发支持,本身也实现了Thrift Server,该服务基于Apache Thrift开发。

EMR HBase Thrift Server

EMR HBase默认会在集群主节点上启动Thrift Server服务,服务端口为9091。

负载均衡

EMR HBase集群在高可用模式下,会在3个主节点启动Thrift Server服务,您可以根据需要实现自己的负载均衡策略,以将请求相对均衡的分配到3个Thrift Server服务上。

示例

以下以Python为例,说明如何使用Python编程来访问EMR HBase集群。

  1. 登录到EMR HBase集群节点,执行以下命令。
    sudo yum install python-pip
    sudo pip install hbase-thrift
  2. 新建hbase_thrift_test.py文件。
    vim hbase_thrift_test.py
    hbase_thrift_test.py文件内容如下。
    #! /usr/bin/env python
    #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()
  3. 执行Python脚本。
    python hbase_thrift_test.py
    输出以下信息。
    The rowkey is  rowkey
    The value is  aaaaaa