2016-04-02 2 views
0

Ich bin fest auf Verbindung zu HBase 1.0.3 über einfache Java-Client. Das Programm hängt an:Verbinden mit hbase 1.0.3 über Java-Client stecken bei zoekeeper.ClientCnxn: Sitzung Einrichtung abgeschlossen auf Server

[main] zookeeper.ZooKeeper: Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=90000 watcher=hconnection-0x1e67b8720x0, quorum=127.0.0.1:2181, baseZNode=/hbaseenter code here 
[main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 
[main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session 
[main-SendThread(127.0.0.1:2181)] zookeeper.ClientCnxn: Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x153d8383c530008, negotiated timeout = 40000 

Der Code ist sehr einfach:

import java.io.IOException; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.TableName; 
import org.apache.hadoop.hbase.client.Connection; 
import org.apache.hadoop.hbase.client.ConnectionFactory; 
import org.apache.hadoop.hbase.client.Result; 
import org.apache.hadoop.hbase.client.ResultScanner; 
import org.apache.hadoop.hbase.client.Scan; 
import org.apache.hadoop.hbase.client.Table; 

public class ScanAllTables { 

public static void main(String args[]) throws IOException{ 

    // Instantiating Configuration class 
    Configuration config = HBaseConfiguration.create(); 

    System.out.println(config.get("hbase.rootdir")); 
    System.out.println(config.get("hbase.zookeeper.property.dataDir")); 
    System.out.println(config.get("hbase.zookeeper.quorum")); 
    System.out.println(config.get("hbase.zookeeper.property.clientPort")); 

    Connection connection = ConnectionFactory.createConnection(config); 

    //System.out.println(connection); 

    // Instantiating Table class 
    Table table = connection.getTable(TableName.valueOf(HBaseTables.APPLICATION_TRACE_INDEX)); 

    //System.out.println(table.getName()); 

    // Instantiating the Scan class 
    Scan scan = new Scan(); 

    // Scanning the required columns 
    //scan.addFamily(HBaseTables.APPLICATION_TRACE_INDEX_CF_TRACE); 
    //scan.setId("ApplicationTraceIndexScan"); 

    // Getting the scan result 
    ResultScanner scanner = table.getScanner(scan); 

    // Reading values from scan result 
    for (Result result = scanner.next(); result != null; result = scanner.next()) { 
     System.out.println("Found row : " + result); 
    } 


    //closing the scanner 
    scanner.close(); 

    table.close(); 
     connection.close(); 
    } 

} 

Die Gläser Ich benutze sind:

commons-collections-3.2.1.jar 
commons-configuration-1.6.jar 
commons-lang-2.6.jar 
commons-logging-1.2.jar 
guava-12.0.1.jar 
hadoop-auth-2.5.1.jar 
hadoop-client-2.5.1.jar 
hadoop-common-2.5.1.jar 
hbase-client-1.0.3.jar 
hbase-common-1.0.3.jar 
hbase-hadoop-compat-1.0.3.jar 
hbase-hadoop2-compat-1.0.3.jar 
hbase-it-1.0.3.jar 
hbase-protocol-1.0.3.jar 
hbase-resource-bundle-1.0.3.jar 
hbase-rest-1.0.3.jar 
htrace-core-3.0.4.jar 
htrace-core-3.1.0-incubating.jar 
log4j-1.2.17.jar 
netty-3.2.4.Final.jar 
netty-all-4.0.23.Final.jar 
protobuf-java-2.5.0.jar 
slf4j-api-1.7.7.jar 
slf4j-log4j12-1.7.7.jar 
zookeeper-3.4.6.jar 

Mein hbase-site.xml ist

<configuration> 
    <property> 
    <name>hbase.rootdir</name> 
    <value>file:///path/to/data/hbase</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.property.dataDir</name> 
    <value>file:///path/to/data/zookeeper</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.quorum</name> 
    <value>127.0.0.1</value> 
    </property> 
</configuration> 

In meinen Gastgebern habe ich th Eintrag: 127.0.0.1 localhost localhost.localdomain Sachin-PC

Auch in hbase regionservers hat localhost Ich habe viele Optionen für hbase.zookeeper.quorum wie localhost versucht, Sachin-PC aber keine hat gearbeitet.

Beachten Sie auch, dass die Gläser, die ich verwende, in hbase lib dieselbe Version haben.

Ich bin einfach nicht in der Lage, meinen Kopf herum wie, was den Fehler verursacht, Tabelle für diesen einfachen Code zu scannen.

Beachten Sie, dass der Code in der Zeile stoppt ResultScanner scanner = table.getScanner (scan); So wird Verbindung hergestellt, aber es werden keine Daten empfangen.

Bitte helfen!

Dank Sachin

ps:

DEBUG [hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: Use SIMPLE authentication for service ClientService, sasl=false        
    DEBUG [hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: Connecting to Sachin-PC/127.0.0.1:55161              
    DEBUG [hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: Use SIMPLE authentication for service ClientService, sasl=false        
    DEBUG [hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: Not trying to connect to Sachin-PC/127.0.0.1:55161 this server is in the failed servers list 

Bitte beachten Sie diese zusätzlichen Protokolle: Da wir die Verbindung geschieht und Region Lage Detail ist auch geholt sehen. Wenn es jedoch versucht, eine Verbindung zu dieser Region herzustellen, um tatsächlich die Details der Tabellensuche abzurufen, erhalten wir den Socket-Close-Fehler, und der Fehler wird der Liste fehlgeschlagener Server hinzugefügt. Dieser Vorgang wiederholt sich immer wieder und somit bleibt der Prozess hängen.

[main-EventThread] zookeeper.ZooKeeperWatcher: hconnection-0x1e67b872-0x153e135af570008 connected 

[main] client.ZooKeeperRegistry: Looking up meta region location in ZK, [email protected]94e2 

[main] client.ZooKeeperRegistry: Looked up meta region location, [email protected]94e2; serverName=sachin-pc,55964,1459772310378 
[main] client.MetaCache: Cached location: [region=hbase:meta,,1.1588230740, hostname=sachin-pc,55964,1459772310378, seqNum=0] 

[hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: Connecting to Sachin-PC/127.0.0.1:55964 

java.net.SocketException: Socket is closed 
    at sun.nio.ch.SocketAdaptor.getOutputStream(Unknown Source) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.closeConnection(RpcClientImpl.java:429) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.handleConnectionFailure(RpcClientImpl.java:477) 


java.net.SocketException: Socket is closed 
    at sun.nio.ch.SocketAdaptor.getInputStream(Unknown Source) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.closeConnection(RpcClientImpl.java:436) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.handleConnectionFailure(RpcClientImpl.java:477) 



[hconnection-0x1e67b872-shared--pool1-t1] ipc.AbstractRpcClient: IPC Client (1890187342) connection to Sachin-PC/127.0.0.1:55964 from Sachin: marking at should close, reason: Connection refused: no further information 
+0

Beachten Sie, dass über Hbase Shell alles funktioniert. –

+0

Nach etwas mehr Debugging fand ich dies: Wenn Verbindung zum Master über Web-UI Ich sehe einen Regionsserver mit Servername: Sachin-PC, 60737,1459782043122 Jetzt in Protokollen sehe ich Verbindung zu Sachin-PC/127.0.0.1 : 60737 was fehlschlägt. Auch auf Netstat manchmal sehe ich TCP 192.168.1.102:60737 Sachin-PC: 0 HÖREN aber die meiste Zeit sehe ich nichts. Dies bedeutet, dass Regionsserver viel versagen und es auf PC-IP-Adresse 192.168.1.102 und nicht auf localhost 127.0.0.1 hört. Vielleicht verursacht das auch ein Problem. –

Antwort

0

Ich habe das Problem herausgefunden. Der Regionsserver lauschte 192.168.1.102:55964 und nicht 127.0.0.1:55964. 192.168.1.102 ist die IP meines Rechners und Sachin-PC ist mein Rechnername.

In Wirten mein Eintrag wurde 127.0.0.1 localhost localhost.localdomain Sachin-PC

Ich entfernte Sachin-PC von dort und es funktioniert jetzt. Der Client verbindet sich jetzt mit 192.168.1.102:55964.

ich aber nicht eine Sache verstehen: in regionservers I angegeben haben: 127.0.0.1 Auch in meinem hbase-site.xml I hbase.zookeeper.quorum als 127.0.0.1

I der

Wenn netstat Ich sehe zoekeeper, Master, Master-Web-UI, Regionsserver Web-UI alle hören bei 0.0.0.0 Allerdings Regionsserver hören bei 192.168.1.102 ist die IP-Adresse meiner Maschine.

Wieso hört regionServer also eine andere IP ab?

Noch eine Sache, wenn ich hbase starte, sehe ich, dass keine Protokolldatei erzeugt wird. Wie lege ich die Protokolldatei fest, die generiert werden soll?

Verwandte Themen