Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js CDH 5中的Hbase节约_Node.js_Hbase_Thrift - Fatal编程技术网

Node.js CDH 5中的Hbase节约

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脚本后,一切都停止工作 您可以在我尝试运行的演示中查看

我正在使用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脚本后,一切都停止工作

您可以在我尝试运行的演示中查看新脚本和基本方法

当我运行'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不再有)

此外,还为该场景设置了单独的部分:

CDH 5 HBase兼容性

CDH 5 HBase是[…]非金属丝 与CDH 4[…]兼容。因此,, 无法从CDH 4到CDH 5进行滚动升级,因为现有 CDH 4 HBase客户端无法向CDH 5服务器和CDH 5发出请求 HBase客户端无法向CDH 4服务器发出请求。客户 但是,Thrift和REST代理服务器保留有线兼容性 在CDH 4和CDH 5之间。[……]

HBase用户API(Get、Put、Result、Scanner等;参见apachehbase API文档)进行了改进,并尝试 确保HBase客户端与源代码兼容,因此应该 无需任何源代码修改即可重新编译。这不可能 然而,由于转换为ProtoBufs,一些 相对模糊的API已经被删除。初步的努力已经完成 另外,还可以保持与高级API的重新编译兼容性 例如过滤器和协处理器。这些高级API仍在使用中 在这方面,我们对API兼容性的保证越来越弱


我明白了。默认情况下,Cloudera Manager 5使用thrift 1包启动thrift服务器。我禁用了ThriftServer的自动重启,然后使用Hbase thrift2 start-f手动启动ThriftServer。我也遇到了同样的问题,解决方案是使用-threadpool启动thrift2