本文为您介绍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集群。
- 登录到EMR HBase集群节点,执行以下命令。
sudo yum install python-pip sudo pip install hbase-thrift
- 新建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()
- 执行Python脚本。
python hbase_thrift_test.py
输出以下信息。The rowkey is rowkey The value is aaaaaa