我知道在stackoverflow上有几篇关于hbase的rest和thrift的文章,但我想重点谈谈性能问题。
我一直在node.js中使用以下库来连接到hbase示例:
节点hbase:https://github.com/wdavidw/node-hbase
节俭:https://github.com/apache/thrift/tree/trunk/lib/nodejs
在弄清楚为什么不能从thrift gateway获得响应时遇到了一些麻烦,我最终运行了两个脚本,结果如下(每个输出相当于完成了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
我的问题是,有没有人注意到hbase的rest和thrift之间有这么大的区别(甚至对于任何应用程序/语言都是如此)?
2条答案
按热度按时间tsm1rwdh1#
你可以试试这个:https://github.com/alibaba/node-hbase-client
它直接连接到区域服务器&zookeeper。
zmeyuzjn2#
rest以xml或json的形式交付,这样模式就出现在数据本身中。thrift不能做到这一点:它只是一个字节负载,然后只能对生成的实体(基于thrift idl定义)进行反序列化。
因此,不管数据是如何压缩的,节俭必然会更快,因为它不带任何模式,代价是依赖其他对象来解释二进制数据。