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),非常欢迎大家积极投稿。
领取专属 10元无门槛券
私享最新 技术干货