1、问题描述
启动HBase,并通过如下java客户端连接HBase服务器:
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum","localhost");
Connection connection = ConnectionFactory.createConnection(configuration);
TableName tableName = TableName.valueOf("test");
boolean res = connection.getAdmin().tableExists(tableName);
System.out.println(res);
结果,程序卡死,也没有报错,当达到超时设置时,提示
java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.hadoop.hbase.shaded.org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
at org.apache.hadoop.hbase.shaded.org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
2、问题分析
在网上查了好久,发现该错误一般就是连接不上HBase导致,为什么连接不上呢?
首先我们访问HBase的管理页面http://localhost:16010可以看到Master的域名:
这里是你的hostname,一般是机器名称相关
Master 01C702601479820.corp.****.com
2、可以看到这个域名,机器是无法处理的,我们需要查看本机的局域网ip然后修改host文件
3、c:/windows/system32/drivers/etc/hosts
192.168.1.2 01C702601479820.corp.****.com
4、然后执行上面客户端代码,即可访问成功