全部产品

多语言(C++/Python/Go等)API访问

更新时间:2020-07-24 14:42:31

简介

HBase增强版通过Thrift支持多语言访问,只要是Thrift支持的语言,都可以访问HBase增强版。HBase增强版服务端的Thrift版本是0.12.0,虽然说thrift支持向后兼容,但如果有条件的用户,最好还是下载0.12.0的thrift,点击这里下载。一些语言提供了管理依赖的方法,可以遵循这些语言的使用习惯来安装thrift,如Python语言可以通过pip install thrift来安装,Go语言可以直接在代码里import {"github.com/apache/thrift/lib/go/thrift"}即可。

支持功能

  1. HBase Thrift2接口(默认)
  2. HBase Thrift1接口(需要提工单后台开启,使用方式)

使用限制

  1. Thrift2只支持HTTPClient访问,并且需要添加用户名和密码
  2. Thrift1接口不支持权限认证,且单个core节点支持1000链接请注意链接数

准备

  1. 下载Thrift安装包,点击这里下载
  2. 下载HBase Thrift2定义文件
  3. 获取集群的连接地址,多语言访问使用的连接为连接信息中的“非 JAVA 语言 Thrift2 访问地址”访问地址部分(注意专有网络地址和外网地址的区别)。

访问

Thrift的使用帮助可以参考Apache Thrift的官方文档,下面给出简单的使用方法。

1.生成对应语言的接口定义文件

从上述地址下载接口定义文件后,按照如下语法生成接口定义文件

  1. thrift --gen <language> Hbase.thrift

例如:

  1. thrift --gen php Hbase.thrift
  2. thrift --gen cpp Hbase.thrift
  3. thrift --gen py Hbase.thrift

2. 构造客户端访问HBase增强版

HBase增强版Thrift服务器端的transport层使用的是HTTP,因此在构造客户端时,需要thrift中的ThttpClient(各个语言都有相应实现)。并且在ACL开启的情况下,需要在ThttpClient上加上两个header来向服务器传输用户名和密码进行认证(如果关闭ACL则不需要)。Thrift在每个语言实现的ThttpClient都有加定制header的函数。如以Python语言的话,用以下方法构造客户端和设置连接串/用户名密码。更多语言示例可以参见demo。

  1. # -*- coding: utf-8 -*-
  2. # 以下两个模块可以通过 pip install thrift 安装获得
  3. from thrift.protocol import TBinaryProtocol
  4. from thrift.transport import THttpClient
  5. # 下面的模块通过 thrift --gen py hbase.thrift 来生成
  6. from hbase import THBaseService
  7. from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan
  8. # 连接地址
  9. url = "http://host:9190"
  10. transport = THttpClient.THttpClient(url)
  11. headers = {}
  12. # 用户名
  13. headers["ACCESSKEYID"]="root";
  14. # 密码
  15. headers["ACCESSSIGNATURE"]="root"
  16. transport.setCustomHeaders(headers)
  17. protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
  18. client = THBaseService.Client(protocol)
  19. transport.open()
  20. # 具体操作,最后close连接
  21. transport.close()

多语言Demo

所有的Demo的完整的代码都上传到了GitHub上,包括该语言thrift定义文件,以及所依赖的libray(某些语言适用)。用户可以直接下载Github上相应语言的代码适用

Python

https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/python

Go

https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/go

C++

https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/cpp

node.js

https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/nodejs

PHP

https://github.com/aliyun/aliyun-apsaradb-hbase-demo/tree/master/hbase/thrift2/php

更多语言

更多语言的使用请参见Thrfit官方文档