2016-04-14 24 views
0

私はcloudera impalaサーバーのバージョン5.4.7 で最初にポートが開いていることを確認するためにtelnetで検証しています。クラスター外のCloudera Impala/Hiveへの接続

 Class.forName("org.apache.hive.jdbc.HiveDriver"); 
     DriverManager.setLoginTimeout(30); 
try (java.sql.Connection connection = DriverManager.getConnection("jdbc:hive2://12.23.56.789:123456/someName;auth=noSasl")) 
{ System.out.println("connected");  } 

しかし、私は私が得るすべてはタイムアウトからこのエラーである

の接続に成功したことがない:

何の問題だろうか? 私たちはJDBCを使用して、クラスタ外からの照会の良い取引を行うClouderaのバージョン

[14 Apr 2016 06:27:26,797] [ERROR] [main] [org.apache.hive.jdbc.HiveConnection] - Error opening session 
org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) 
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) 
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:156) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:143) 
    at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:475) 
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:181) 
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at com.datorama.core.service.delivery.providers.DatabaseProvider.main(DatabaseProvider.java:330) 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.socketRead(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.io.BufferedInputStream.fill(Unknown Source) 
    at java.io.BufferedInputStream.read1(Unknown Source) 
    at java.io.BufferedInputStream.read(Unknown Source) 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127) 
    ... 13 more 
Exception in thread "main" java.sql.SQLException: Could not establish connection to jdbc:hive2://54.69.2.250:21050/sage_global;auth=noSasl: java.net.SocketTimeoutException: Read timed out 
    at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:486) 
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:181) 
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at com.datorama.core.service.delivery.providers.DatabaseProvider.main(DatabaseProvider.java:330) 
Caused by: org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) 
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) 
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:156) 
    at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:143) 
    at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:475) 
    ... 5 more 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.socketRead(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.io.BufferedInputStream.fill(Unknown Source) 
    at java.io.BufferedInputStream.read1(Unknown Source) 
    at java.io.BufferedInputStream.read(Unknown Source) 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127) 
    ... 13 more 

答えて

1

とまったく同じハイブバージョンを使用しています。 Hive JDBCドライバを使用することは可能かもしれませんが、ImpalaのJDBC接続文字列にはおそらく21050の適切なポートを設定する必要があります。ホスト名(またはIPアドレス)がImpalaデーモンを実行しているインスタンスを指していることを確認する必要があります(Hiveの場合は、namenodeを指す場合があります)。私の推測では、ポート番号が間違っているというのは、エラーが単純にトップ接続を確立できないように思われるからです。

私たちはImpalaのためにClouderaから提供された特定のドライバを使用することを決めましたが、それは必要ではないかもしれません。また、ロードバランサを設定して、発信者に特定のImpalaインスタンスを選択させるのではなく、クエリを指示する安定したアドレスが1つあるようにします。これにより、負荷が均等に分散され、外部の発信者が何かを変更する必要なく、クラスタ内で変更を加えることができます。

関連する問題