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
Beachten Sie, dass über Hbase Shell alles funktioniert. –
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. –