NodeJS Hbase节俭奇怪
我遇到了一个非常奇怪的情况。我一直在尝试使用thrift来获取nodeJS客户端,以便运行Hbase,除了获取任何返回数据外,我似乎大部分时间都取得了成功。我正在运行hbase.0.94.8(目前是稳定版本),并且它确实正在运行,我正在运行节俭0.9.0,它也被构建并运行。与他们两个跑,我能查询HBase的与外壳,也得到了节俭的网页,但是当我运行下面的代码,没有任何反应:NodeJS Hbase节俭奇怪
var thrift = require('thrift'),
HBase = require('./Hbase.js'),
HBaseTypes = require('./Hbase_types.js');
var connection = thrift.createConnection('localhost',9090,{ transport: thrift.TBufferedTransport,protocol:thrift.TBinaryProtocol });
connection.on('connect',function(){
console.log('connected');
var client = thrift.createClient(HBase,connection);
client.getTableNames(function(err,data){
if(err)
console.log('there was an error:',err);
else
console.log('hbase tables:',data);
});
});
connection.on('error',function(err){
console.log('error',err);
});
我肯定得到一个连接(或者,在至少,连接事件触发),但它就像另一端没有任何东西。在你回答之前,Hbase master肯定在运行,节俭肯定在运行,9095上的网页和9090上的服务(由日志报告)。日志似乎反映出什么都没有发生(即节俭和hbase日志似乎不受该请求的影响),但我确实获得了成功的连接。
有什么想法?
我有问题的答案。
在我给出之前,我只想说我实际上认为我提出的问题很重要,因为答案很明显,但很微妙。也许早期的节俭版本是不同的,但在0.9.0框架传输默认情况下是不开启的,它需要在节点上。没有关于hbase,节俭和节点的教程或解释提到这一点,所以它应该在互联网上的某个地方。
[hbase-dir]/bin/hbase-daemon.sh start thrift -f
为完整的文章http://dailyjs.com/2013/07/04/hbase/只需阅读并试图在OSX 10.9:
HBASE的节俭服务器必须与(标志“-f”)为节点的工作,像这样的帧传输开始。 1(Java 1.6.0_65),Hadoop(1.2.1)& HBase(0.94.15)通过Homebrew安装。
我开始节俭服务器用-f标志
hbase-daemon.sh start thrift -f
,我发现连接设置需要变化不大
connection = thrift.createConnection('localhost', 9090, {
transport: thrift.TFramedTransport, //TBufferedTransport doesn't work!
//protocol: thrift.TBinaryProtocol //protocol seems not required
});
谢谢。有趣的是,这就是-f标志所做的事情(对传输进行架构,因为大概节点通过持久连接进行通信),所以我知道我只是犯了一个错误,不编辑我自己的代码。我会尝试联系dailyjs,看看他们是否让我编辑它。 –
此外,我会保持协议密钥,因为它是信息。当然,TBinaryProtocol是默认的,但是通过节俭文档阅读的人可能不知道这一点。 –
你从不同的服务器来访问HBase的运行的节点文件脚本服务器?我问,因为我试图实现REST hbase连接,并且无法理解节点脚本如何运行。 – vbNewbie