内容简介:【Java】HBase_thrift/thrift2_使用指南
Thrift server简介
Thrift server是HBase中的一种服务,主要用于对多语言API的支持。基于 Apache Thrift (多语言支持的通信框架)开发,目前有两种版本 thrift 和 thrift2 。
thrift2是当时为了适应新的Java API,提出来的。由于种种原因,thrift2没有完美兼容并替代thrift,所有就留下了两个版本。
Thrift 和 Thrift2 的区别
- 接口设计上Thrift2要比Thrfit更优雅,或者说和现在的API更贴近。比如两者的get接口:
// Thrift2 的get接口,传入TGet(对应Java API种的Get类)
// 用过Java API的同学看起来应该会更亲切
TResult get(
/** the table to get from */
1: required binary table,
/** the TGet to fetch */
2: required TGet tget
) throws (1: TIOError io)
// Thrift 的get接口,没有TGet这些包装,比较裸
list<TCell> get(
/** name of table */
1:Text tableName,
/** row key */
2:Text row,
/** column name */
3:Text column,
/** Get attributes */
4:map<Text, Text> attributes
) throws (1:IOError io)
- Thrift2没有DDL方面的接口,所以现在 Hue 还是用Thrift的接口。如果你只想读写数据,建议用Thrift2。
Thrift server原理
Thrfit其实就是个代理,你的请求发到Thrift server上后,server通过Java API再帮你访问HBase。
Thrift实现类是 org.apache.hadoop.hbase.thrift.ThriftServer ,thrift2的实现类是 org.apache.hadoop.hbase.thrift2.ThriftServer 。它们访问HBase使用的也是普通的HBase client API,所以当你的请求到达Thrift server后,它通过client API去帮你定位数据,然后读取数据。这么来看,Thrift Server比较灵活,你可以部署在客户机上,也可以独立部署一个thrift集群。
Thrift server 参数选择
- TServer的选择。这是Thrift框架server端处理模型的选择。有三种,
TNonblockingServer,THsHaServer,TThreadPoolServer。可以通过启动命令参数指定,具体运行./bin/hbase thrift可以看到命令帮助(or./bin/hbase thrift2)。默认是用TThreadPoolServer,建议就不用改了,除非你特别了解你的场景。关于这几种模型的区别,性能对比可以看这篇 文章 。 -
hbase.regionserver.thrift.compact是否使用Thrift TCompactProtocol,默认false。如果你每列数据比较大,可以试着开启,减少带宽。 -
hbase.thrift.connection.cleanup-intervalthrift server清理与HBase连接的周期,与HBase的是一个长连接,默认10秒 -
hbase.thrift.connection.max-idletime如果与HBase的长连接超过这个时间没有被使用,则会被清理,默认10分钟 -
hbase.thrift.minWorkerThreadsTThreadPoolServer的线程池中的corePoolSize,也就是即便空闲时候保持的线程数,默认16。 -
hbase.thrift.maxWorkerThreadsTThreadPoolServer的线程池中的maximumPoolSize,默认1000。这个会影响server最大处理能力,需要根据硬件衡量。 -
hbase.thrift.maxQueuedRequestsTThreadPoolServer的线程池队列长度上限,超过这个值时会去创建一个新的线程处理请求(前提是没有达到maxWorkerThreads,否则拒绝请求)
注: 上述最后三个值对thrift2无效。1.3之前的版本中,thrift2无法设定这些值。2.0版本中在thrift2启动命令里通过指定'w'选项来设置maxWorkerThreads。具体可以运行上文中提到的命令,查看是否支持'w'选项,如果不支持,默认max=int最大值。
Thrift部署模式
- 集群模式
这是最常见的模式,集群模式中的thrift建议不要和RS或者DN混部署。并且如果你使用集群模式的部署方案,你的client端不要去维护长连接。因为如果你维护一个长连接,负载均衡就会失效,如果thrift集群重启,大部分连接会连上第一个起来的thrfit server。
- 本地模式
本地模式就是在每个客户机上起一个client,这个客户机独享一个thrift。优点是部署简单,网络开销少。并且这种模式可以使用长连接,自己维护TTransport池。对于持续的写入或者读取,效果要比短连接好很多。HBase IPC本身也是维护一个长连接。缺点是,可靠性略差,如果thrift server挂了的话。但本身如果是多Client,其实也无所谓。
使用示例
直接参考这篇博文吧: http://blog.cloudera.com/blog/2013/09/how-to-use-the-hbase-thrift-interface-part-1/
PS:如果你不想自己在云上部署运维HBase,可以使用云HBase
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
电脑报(上下册)
电脑报社 / 西南师范大学出版社 / 2006-12-01 / 45.00元
全套上、下两册,浓缩2006年电脑报精华文章。附录包含70余篇简明IT应用指南,覆盖软件、硬盘、数码、网络四大领域。配赠权威实用的2006-2007中国计算机年鉴DVD光盘,近1.4GB海量信息与资源超值奉献。8大正版超值软件,涵盖系统维护、系统安全、办公应用、多媒体娱乐等四大领域。微软、腾讯、友立等知名厂商,新年献礼。提供2006-2007全系列硬件、数码产品资讯,兼具知识性与资料性。官方网站全......一起来看看 《电脑报(上下册)》 这本书的介绍吧!