HBase:Thrift vs Rest表现

Mar*_*del 11 rest hadoop hbase thrift node.js

我知道StackOverflow上有一些关于REST和Thrift for HBase的帖子,但我想稍微关注一下性能问题.

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

找出为什么我不会从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]
???? 
Run Code Online (Sandbox Code Playgroud)

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

我的问题是,是否有人注意到HB和Thrift之间的差异(或者甚至只是一般的任何应用程序/语言)?

dav*_*vek 5

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

因此,无论数据如何被压缩,thrift都必然会更快,因为它不依赖于其他对象来解释二进制数据.