通过挂在zookeeper上的java客户端连接到hbase 1.0.3.ClientCnxn:在服务器上完成会话建立

通过挂在zookeeper上的java客户端连接到hbase 1.0.3.ClientCnxn:在服务器上完成会话建立,java,database-connection,hbase,Java,Database Connection,Hbase,我一直坚持通过简单的java客户端连接到hbase 1.0.3。 程序挂起在: [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-SendTh

我一直坚持通过简单的java客户端连接到hbase 1.0.3。 程序挂起在:

[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
代码非常简单:

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();
     }

}
我使用的罐子是:

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
我的hbase-site.xml是

<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>
请参阅以下附加日志: 正如我们所看到的,连接发生了,并且还获取了区域位置详细信息。 但是,当它试图连接到该区域以实际获取表扫描详细信息时,我们会得到套接字关闭错误,然后将添加到失败的服务器列表中。这个过程一次又一次地重复,因此这个过程被卡住了

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

[main] client.ZooKeeperRegistry: Looking up meta region location in ZK, connection=org.apache.hadoop.hbase.client.ZooKeeperRegistry@69b794e2

[main] client.ZooKeeperRegistry: Looked up meta region location, connection=org.apache.hadoop.hbase.client.ZooKeeperRegistry@69b794e2; 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
我解决了这个问题。 区域服务器正在侦听192.168.1.102:55964,而不是127.0.0.1:55964。 192.168.1.102是我的机器的IP,Sachin PC是我的机器名

我的参赛作品是 127.0.0.1 localhost.localdomain localhost Sachin PC

我从那里移除了Sachin PC,它现在可以工作了。客户端现在连接到192.168.1.102:55964

然而,我不明白一件事: 在RegionServer中,我指定了:127.0.0.1 在我的hbase-site.xml中,我也指定了 hbase.zookeeper.quorum为127.0.0.1

当我执行netstat时,我看到zookeeper、master、master web UI和region server web UI都在0.0.0.0上侦听 但是,regionserver正在侦听192.168.1.102,这是我机器的IP地址

那么为什么regionserver在另一个IP上侦听呢


还有一件事,当我启动hbase时,我没有看到生成任何日志文件。如何指定要生成的日志文件。

请注意,通过Hbase外壳,一切正常。经过进一步调试,我发现:通过web UI连接到Master时,我看到一个服务器名为sachin pc的区域服务器,607371459782043122。现在在日志中,我看到与sachin pc/127.0.0.1:60737的连接失败。同样在netstat上,有时我看到TCP 192.168.1.102:60737 Sachin PC:0正在侦听,但大多数时候我什么也看不到。这意味着区域服务器出现了很多故障,它正在侦听PC IP地址192.168.1.102,而不是本地主机127.0.0.1,这可能也是造成问题的原因。
[main-EventThread] zookeeper.ZooKeeperWatcher: hconnection-0x1e67b872-0x153e135af570008 connected

[main] client.ZooKeeperRegistry: Looking up meta region location in ZK, connection=org.apache.hadoop.hbase.client.ZooKeeperRegistry@69b794e2

[main] client.ZooKeeperRegistry: Looked up meta region location, connection=org.apache.hadoop.hbase.client.ZooKeeperRegistry@69b794e2; 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