通过Thrift 访问ApsaraDB for HBase

Thrift 多语言接入

Thrift 提供多语言访问HBase的能力,支持的语言包从Thrift官网看括: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml , Delphi 以及别的语言.主要流程是用户Thrift Client 通过Thrift协议访问HBase的thriftserver,thriftserver做请求转发给HBase的存储服务来做数据的读以及写操作.大概架构图如下:

要通过Thrift 多语言访问HBase需要以下几步:

一.开通HBaseThrfitserver服务

在用户自己管控页面点击这里参考开通Thrfitserver服务化(高可用版本Thrfitserver),得到host:port的访问入口;或者自己可以选择ECS自建Thrfitserver方法,参考链接:

https://yq.aliyun.com/articles/226073?spm=a2c4e.11153940.blogcont622400.11.4e784669vNQMCA

最终自建ECS的ip (host)以及默认的话9090端口作为访问入口。

二.用户Thrift Client访问

一般客户常见的访问方式是Python的访问方式以及PHP的访问方式 ,这里我们先一步步给出PHP的访问方式;

2.1 以PHP走Thrift访问HBase:

2.1.1 安装Thrift编译环境;

我们云HBase的Thrift环境是0.9.0,所以建议客户自己建立自己的thrift环境也是0.9.0,下载的源码包我们后面会用到,这里需要先安装Thrift编译环境,对于源码安装可以参考Thrift官网;

通过如下命令可以看出安装Thrift的版本信息;

2.1.2 生成Thrift访问client的访问文件;

我们从https://public-hbase.oss-cn-hangzhou.aliyuncs.com/thrift/Hbase.thrift?spm=a2c4e.11153940.blogcont622400.14.4e784669vNQMCA&file=Hbase.thrift下载出我们云HBase的Hbase.thrift文件,这里我们云HBase使用的是thrift1协议,具体可以参考文件看出使用格式,下载完成以后执行Thrift命令进行编译;

编译命令如下:

上述是语言的缩写,那么常见的有如下:

执行thrift --gen php Hbase.thrift 以后会在目录下得到gen-php 这个就是我们需要的函数包文件;

此外我们在2.1.1得到thrift的源码包文件将下载到的Thrift源码文件夹下的/lib/php/lib下面的Thrift文件夹以及gen-php一起丢在我们的业务逻辑代码一个src目录下面,加上我们自己的client.php的代码,目录结果如下所示:

2.1.3 PHP访问代码编写;

这个时候,我们来编写我们的client.php代码逻辑,上述的Thrift文件夹以及gen-php文件夹,可以随自己项目以及个人风格命名,这里方便大家搞清目录结构,就保留原来风格;下面贴出php的代码,我们下面的所有程序都是在HBase 建了一张表"new":

代码执行结果如下:

2.2 Python访问流程:

此外还有常见的python的客户,对于python的话,有happybase这种python的第三方包含thrift的库去做,我们见过一些客户使用Happybase进行访问HBase thrift,参见文章;此外,python 有丰富的库,我们通过pip可以安装thrift,以及访问HBase的thrift库;执行流程如下,假设用户已经安装python以及pip:

上面2步执行完成以后,既可以编写访问HBase的代码:

对应上述的程序执行的结果如下:

三.访问HBase Thriftserver

3.1 访问机器开通白名单

将访问的机器的ip加入HBase集群的白名单,然后就可以正常执行代码;

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190126G1462R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券