2017-01-16 4 views
0

Cloudera Manager Express 5.9.0がインストールされています.Haseは、CentOS 7.3のVirtualBox vmのポート9090で動作するThriftサーバーと一緒にインストールされています。Pythonとhappybase/ThriftからHbaseに接続

私がhappybase経由で正常にインターフェースできない理由を理解したり、次のステップを特定する手助けをしてください。

私は経験豊富なJavaプログラマーで、Pythonを学んでいます。私はこの特定の環境ではないが、ネイティブインターフェイスを使用してJavaからHbaseを使用した経験があります。

  • 私は9090(倹約)はリスニングとの接続を受け付けていることを検証してい
  • など、私はデータを挿入、テーブルを作成するためのHBaseシェルを使用することができることを検証しています。
  • 私は、Thriftサーバーがhappybase接続パラメータと同じプロトコル/トランスポート設定で実行されていることを検証したと思います。私が実行してThift Webサービスマネージャを持っている

    [[email protected] ~]# python testhbase.py 
    Traceback (most recent call last): 
        File "testhbase.py", line 10, in <module> 'cf3': dict(), # use defaults 
        File "build/bdist.linux-x86_64/egg/happybase/connection.py", line 311, in create_table 
        File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 198, in _req return self._recv(_api) 
        File "/usr/lib64/python2.7/site-packages/thriftpy/thrift.py", line 210, in _recv fname, mtype, rseqid = self._iprot.read_message_begin() 
        File "/usr/lib64/python2.7/site-packages/thriftpy/protocol/compact.py", line 147, in read_message_begin % proto_id) 
    thriftpy.protocol.exc.TProtocolException: TProtocolException(type=4) 
    [[email protected] ~]# 
    

    import happybase 
    
    connection = happybase.Connection(host='localhost',port=9090,transport='buffered', protocol='compact') 
    
    connection.create_table('mytable', 
        {'cf1': dict(max_versions=10), 
        'cf2': dict(max_versions=1, block_cache_enabled=False), 
        'cf3': dict(), # use defaults 
        } 
    ) 
    

    エラーメッセージ、私はのための偉大な参照を見つけることができません:

のPythonスクリプトhappybase HOWTOからほぼ直接取得報告するポート9095:

HBase Version 1.2.0-cdh5.9.0, rUnknown HBase version and revision 
Thrift Impl Type threadpool Thrift RPC engine implementation type chosen by this Thrift server 
Compact Protocol true Thrift RPC engine uses compact protocol 
Framed Transport false Thrift RPC engine uses framed transport 

lpは大変感謝しています。ありがとうございました。

+0

あなたは右のプロトコルと輸送と、倹約1(ないthrift2)デーモンが使用されていることを確認していますか? –

+0

Wouter - あなたが正しいと賭ける。私はThrift1/2の違い、Thrift²ハッピーベースのサポートの欠如を認識していませんでした。あなたが答えとして投稿するなら、私は答えを受け入れるでしょう。 – starvingmind

答えて

1

サポートされているバージョンのスリフトデーモンを使用していないようです。

正しいプロトコルとトランスポートで、thrift 1(thrift2ではない)デーモンが使用されていることを確認してください。

+0

HappybaseはThrift1のみをサポートしています。 Thrift2のPythonサポートについては、次のURLを試してみてください:https://github.com/apache/hbase/blob/master/hbase-examples/src/main/python/thrift2/DemoClient.py – starvingmind

+0

@wouterbolsterlee hbaseインストールはThrift1またはThrift2を使用していますか? – Stanko