HBase:Thrift vs Rest 性能

Posted

技术标签:

【中文标题】HBase:Thrift vs Rest 性能【英文标题】:HBase: Thrift vs Rest performance 【发布时间】:2013-05-24 09:46:55 【问题描述】:

我知道 *** 上有几篇关于 HBase 的 REST 和 Thrift 的帖子,但我想重点关注一下性能问题。

我一直在使用 Node.js 中的以下库来连接到 HBase 实例:

节点-hbase:https://github.com/wdavidw/node-hbase 节点节俭:https://github.com/apache/thrift/tree/trunk/lib/nodejs

在弄清楚为什么我无法从 Thrift 网关获得响应的一些麻烦之后,我终于让两个脚本都运行了,结果如下(每个输出相当于完成了 1000 个操作):

┌─[mt@Marcs-MacBook-Pro]─[~/Sources/node-hbase]
└──╼ node hbase.js 
hbase-write: 99ms
hbase-write: 3412ms
hbase-write: 3854ms
hbase-write: 3924ms
hbase-write: 3808ms
hbase-write: 9035ms
hbase-read: 216ms
hbase-read: 4676ms
hbase-read: 3908ms
hbase-read: 3498ms
hbase-read: 4139ms
hbase-read: 3781ms
completed
┌─[mt@Marcs-MacBook-Pro]─[~/Sources/node-hbase]
└──╼ node thrift.js 
hbase-write: 4ms
hbase-write: 931ms
hbase-write: 1061ms
hbase-write: 988ms
hbase-write: 839ms
hbase-write: 807ms
hbase-read: 2ms
hbase-read: 435ms
hbase-read: 562ms
hbase-read: 414ms
hbase-read: 427ms
hbase-read: 423ms
completed
┌─[mt@Marcs-MacBook-Pro]─[~/Sources/node-hbase]
└──╼ 

使用的脚本可以在这里找到:https://github.com/stelcheck/node-hbase-vs-thrift

我的问题是,有没有人注意到 REST 和 Thrift 对于 HBase(甚至只是一般来说对于任何应用程序/语言)之间的巨大差异?

【问题讨论】:

根据***.com/questions/11025901/… 中链接的基准,Thrift 确实非常快......但是 REST 呢?在我看来,毕竟应该没有那么大的区别...... 【参考方案1】:

REST 以 XML 或 JSON 的形式提供,因此模式存在于数据本身中。 Thrift 不这样做:它只是一个字节负载,然后只能针对生成的实体进行反序列化(基于 thrift IDL 定义)。

因此,无论数据如何压缩,thrift 肯定会更快,因为它不携带任何架构,其“代价”是依赖其他对象来解释二进制数据。

【讨论】:

这必须解释一些差异,但肯定不是全部?此外,如果我将日志频率从 1000 个请求降低到 100 个,我清楚地看到它会快速运行一段时间,然后等待……基本上,它每 200-300 个请求就会出现峰值。【参考方案2】:

你可能想试试这个:https://github.com/alibaba/node-hbase-client

它直接连接到区域服务器和动物园管理员。

【讨论】:

看起来非常棒!事实上,我宁愿最终不必使用 Thrift 或 REST。

以上是关于HBase:Thrift vs Rest 性能的主要内容,如果未能解决你的问题,请参考以下文章

HBase简介

HBase整体架构

HBase thrift/thrift2 使用指南

Thrift RPC 从 c# 中的 thrift 客户端失败到在 HBase 服务器上旋转的 thrift 服务器

c++访问hbase

HBase赠书|云HBase Thrift使用最佳实践