Hbase是目前比较火的列存储数据库,由于Hbase是用Java写的,因此它原生地提供了Java接口,对非Java程序人员,怎么办呢?幸好它提供了thrift接口服务器,因此也可以采用其他语言来编写Hbase的客户端
目前的Hbase(0.94.11,本文即基于此版本)有两套thrift接口(可以叫thrift1和thrift2),它们并不兼容(随意性太强,这可能是所有开源软件都具有的问题)。根据官方文档,thrift1很可能被抛弃,但网上的文章基本是介绍thrift1的,本文则主要介绍thrift2。
要使用Hbase的thrift接口,必须将它的服务启动,
命令行为:./hbase-deamon.sh start thrift2
thrift默认的监听端口是9090,可以用netstat -nl | grep 9090看看该端口是否有服务。
Linux下安装Thrift
https://blog.csdn.net/y472360651/article/details/79050571
在Master中Hbase安装目录下的bin目录启动thrift服务:
./hbase-daemon.sh start thrift
Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。通常被当作RPC框架来使用,最初是Facebook为了解决大规模的跨语言服务调用而设计开发出来的,Thrift架构图如下:
从上图可以看出Thrift采用了分层架构,概念非常清晰,便于大家理解使用,从下至上依次为传输层、协议层和处理层;
传输层:对底层IO进行了简单的抽象,解决数据在网络中的传输问题,通过字节流的方式发送和接受Message,支持TSocket、TFileTransport、TZlibTransport、TBufferedTranspor、TFramedTransport等多种传输层协议。
协议层:将底层的字节流转换成数据流,对字节流数据进行序列化和反序列化,协议层决定了到底被传输的数据是什么,支持包括TBinaryProtocol、TCompactProtocal、TCompactProtocal在内的多种协议;
处理层:包含用户的完整逻辑,决定数据应该被如何进行处理;
TServer:Thrift同时还提供了多种服务端模型,TSimpleServer(单线程服务模型,常用于测试)、TThreadPoolServer(多线程服务模型,使用标准的阻塞式IO)、TNonblockingServer(多线程服务模型,使用非阻塞式IO,需同TFramedTransport配合使用)、THttpServer(支持HTTP协议)。