使用thrift nodejs连接hbase时连接被拒绝

时间:2015-07-27 05:41:02

标签: javascript node.js connection hbase

我想在Hbase中保存我的数据。所以我想连接Nodejs和Hbase。我找到了一个教程http://www.amicksolutions.com/blog/hadoop-using-nodejs-with-hbase并且它的工作原理。这是以下Hbase连接代码:

var thrift = require('thrift'),
  HBase = require('./gen-nodejs/HBase.js'),
  HBaseTypes = require('./gen-nodejs/HBase_types.js'),
  connection = thrift.createConnection('localhost', 9090, {
    transport: thrift.TBufferedTransport,
    protocol: thrift.TBinaryProtocol
  });

connection.on('connect', function() {
  var client = thrift.createClient(HBase,connection);
  client.getTableNames(function(err,data) {
    if (err) {
      console.log('get table names error:', err);
    } else {
      console.log('hbase tables:', data);
    }
    connection.end();
  });
});

connection.on('error', function(err){
  console.log('error:', err);
});

以上代码工作正常,我能够列出所有表,但问题是我也想做CURD操作。我已经搜索了很多但没有找到关于这个模块的正确文档,如何做其他操作,比如get,put。

这是我找到的另一个模块https://github.com/wdavidw/node-hbase拥有良好的文档,但我无法连接以下代码:

var assert = require('assert');
var hbase = require('hbase');

hbase({ host: '127.0.0.1', port: 9090 })
.table('my_table' )
.create('my_column_family', function(err, success){
  this
  .row('my_row')
  .put('my_column_family:my_column', 'my value', function(err, success){
    this.get('my_column_family', function(err, cells){
      this.exists(function(err, exists){
        assert.ok(exists);
      });
    });
  });
}) 

这可能是我必须在这里使用一些协议。我不知道什么是捕获。我无法连接并收到以下错误:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

另一个困惑是https://github.com/wdavidw/node-hbase这个模块是否使用thrift API?还有其他解决方法吗?

2 个答案:

答案 0 :(得分:2)

这就是我完成插入的方式:

ng-if,ng-show,ng-hide

答案 1 :(得分:0)

尝试与node-hbase建立时遇到同样的错误:

{ 
    [Error: connect ECONNREFUSED]
    code: 'ECONNREFUSED',
    errno: 'ECONNREFUSED',
    syscall: 'connect' 
}

我的解决方案基于hbase.apache.org book, chapter: REST。在hbase目录中的hbase服务器上(对我来说是/usr/local/hbase/,为了更好的概述),我跑了:

./bin/hbase rest start -p 8080

它启动REST服务器,端口8080是默认服务器,根据您的需要进行调整。 之后,运行node-hbase文档中的代码

var assert = require('assert');
var hbase = require('hbase');

hbase({ host: '127.0.0.1', port: 8080})
.table('my_table' )
.create('my_column_family', function(err, success){
  this
  .row('my_row')
  .put('my_column_family:my_column', 'my value', function(err, success){
    this.get('my_column_family', function(err, cells){
      this.exists(function(err, exists){
        assert.ok(exists);
      });
    });
  });
}) 

按预期工作。