Node.js CDH 5中的Hbase节约
我正在使用Node.js Thrift API连接到Hbase。在我将CDH 4.6升级到CDH 5之前,一切都很顺利。升级后,我使用以下脚本重新生成Node.js的Thrift API:Node.js CDH 5中的Hbase节约,node.js,hbase,thrift,Node.js,Hbase,Thrift,我正在使用Node.js Thrift API连接到Hbase。在我将CDH 4.6升级到CDH 5之前,一切都很顺利。升级后,我使用以下脚本重新生成Node.js的Thrift API: thrift --gen js:node /opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/include/thrift/hbase2.thrift 用新生成的脚本替换原始Node.js脚本后,一切都停止工作 您可以在我尝试运行的演示中查看
thrift --gen js:node /opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/include/thrift/hbase2.thrift
用新生成的脚本替换原始Node.js脚本后,一切都停止工作
您可以在我尝试运行的演示中查看新脚本和基本方法
当我运行'get'方法时,它返回“内部错误处理get”
当我运行'put'方法时,它返回“无效的方法名:'put'”
新的Thrift API似乎完全不兼容?我在这里遗漏了什么吗?HBase附带了两个节俭的IDL文件:
get()
方法,但其中只有一个有put()
方法,这正是上面的错误消息告诉我们的
引自本页:
HBase中目前有两种thrift服务器实现,即
套餐:
- org.apache.hadoop.hbase.thrift:也许有一天 标记为不赞成的
- org.apache.hadoop.hbase.thrift2:也就是说 包裹这是为了与HTable接口和 总有一天会取代旧的thrift(旧的thrift模仿API HBase不再有)
我明白了。默认情况下,Cloudera Manager 5使用thrift 1包启动thrift服务器。我禁用了ThriftServer的自动重启,然后使用Hbase thrift2 start-f手动启动ThriftServer。我也遇到了同样的问题,解决方案是使用-threadpool启动thrift2