3

私は非常に奇妙な状況に陥っています。Hbaseを実行するためにthriftを使用してnodeJSクライアントを取得しようとしましたが、戻りデータを取得することを除いて、ほとんどの方法で成功したようです。hbase.0.94.8 (現在は安定版) を実行していますが、確実に実行されています。thrift 0.9.0 を実行しています。ビルドも実行もされています。両方を実行すると、シェルを使用して Hbase にクエリを実行し、thrift の Web ページにアクセスすることもできますが、次のコードを実行しても何も起こりません。

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 マスターは確実に実行されており、thrift は確実に実行されており、9095 で Web ページが、9090 でサービスが (ログで報告されているように) 実行されています。ログは何も起こっていないことを反映しているように見えます (つまり、thrift と hbase のログはリクエストの影響を受けていないようです) が、確実に接続に成功しています。

何かご意見は?

4

2 に答える 2

5

記事全文http://dailyjs.com/2013/07/04/hbase/を読んで、OSX 10.9.1 (Java 1.6.0_65) で Hadoop (1.2.1) と HBase (0.94.15) を試してみました。 ) Homebrew 経由でインストールされます。

-f フラグを付けてthriftサーバーを起動しました

    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
    });
于 2014-01-15T15:45:31.460 に答える
3

私はその質問に対する答えを持っています。

その前に、私が尋ねた質問は重要だと思うことを前置きしておきたいと思います。なぜなら、答えは明白でありながら微妙なものだったからです。thrift の以前のバージョンは異なる場合がありますが、0.9.0 では、フレーム化されたトランスポートはデフォルトでオンになっておらず、ノードでオンにする必要があります。hbase、thrift、および node のチュートリアルや説明ではこれについて言及されていないため、インターネット上のどこかにあるに値します。

Hbase の thrift サーバーは、次のように、ノードを機能させるためにフレーム トランスポートをオン (フラグ "-f") にして起動する必要があります。

[hbase-dir]/bin/hbase-daemon.sh start thrift -f
于 2013-07-02T21:46:43.380 に答える