2017-03-03 7 views
1

jshs2と呼ばれるハイブ用のnode.jsクライアントドライバを使用していますが、hiveserver2に接続する際に接続の問題が発生しました。無効なステータス128を調べようとしましたが、運がありませんでした。ここに私のコードは次のとおりです。HiveServer2 TTransportException:無効な状態-128

const options = { 
 
\t auth: "NOSASL", 
 
\t host: "my host", 
 
\t port: 10000, 
 
\t timeout: 10000, 
 
\t username: "my username", 
 
     password: "my password" 
 
\t hiveType: HS2Util.HIVE_TYPE.CDH, 
 
\t hiveVer: "0.13.1", 
 
\t thriftVer: "0.9.0", 
 
\t cdhVer: "5.3.3" 
 
}; 
 

 

 
it('test', function() { 
 
\t var configuration = new Configuration(options); 
 
\t var idl = new IDLContainer(); 
 
\t var cursor; 
 
\t return idl.initialize(configuration).then(function() { 
 
\t \t var connection = new HiveConnection(configuration, idl); 
 
\t \t return connection.connect(); 
 
\t }).then(function(_cursor) { 
 
\t \t cursor = _cursor; 
 
\t \t return cursor.execute(options.query); 
 
\t }).then(function() { 
 
\t \t promise.delay(2000); 
 
\t \t logger.log('info', cursor.getOperationStatus()); 
 
\t }).catch(function(error) { 
 
\t \t throw error; 
 
\t }); 
 
});

Serverログ:

java.lang.RuntimeException: org.apache.thrift.transport.TTransportException: Invalid status -128 
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219) 
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:227) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.thrift.transport.TTransportException: Invalid status -128 
at org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransport.java:230) 
at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:184) 
at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125) 
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:262) 
at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41) 
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216) 
... 4 more 
+1

例外は、 'handleSaslStartMessage'からスローされます。言い換えれば、JDBCクライアントはサーバーとの認証方法を否定しようとしますが、合意はありません。 S.Oについても同様の質問がいくつかあります。 (そして他の場所で)**そのサーバー**が期待している認証方法を確認し、クライアントがそれを使用していることを確認してください。 Cf。 http://findingthecomputer.blogspot.fr/2016/09/odbc-with-hive-on-cloudera-causing.htmlとhttp://stackoverflow.com/questions/30905334/php-hiveserver-2-issues ... –

+0

...とhttp://grokbase.com/t/hive/user/157xvy8ra8/hiveserver-thrift-ttransportexceptionなど –

答えて

2

サムソンは正しいです。私のクライアントの認証セットは、サーバが期待していたものとは異なりました。 HiveServer2設定ファイルhive-site.xmlを確認してください。

<property> 
    <name>hive.server2.enable.doAs</name> 
    <value>false</value> 
</property> 
<property> 
    <name>hive.server2.use.SSL</name> 
    <value>false</value> 
</property> 
<property> 
    <name>hive.server2.authentication</name> 
    <value>NOSASL</value> 
</property> 

それはhive.server2.authenticationプロパティの設定を持っていなかったので、私はそこに追加:ここでは抜粋です。ドキュメントの参照については、Cloudera's ODBC driver for Apache Hive install guideを参照してください。ページ22認証の設定セクション

関連する問題