2014-09-23 73 views
-1

嗨,我是新来的hbase,并试图实践它。首先我想描述系统配置。 背景:从Windows Java应用程序访问虚拟盒子hbase

我正在使用Windows 7并安装了Oracle Virtual Box。然后,在Ubuntu上安装Ubuntu服务器后,我在Ubuntu上安装了hbase0.98-hadoop2-bin.tar.gz。我已经在独立模式下配置了hbase。我的hbase-site.xml文件是这样的:

<Configuration> 
<property> 
<name>hbase.rootdir</name> 
<value>file:///home/abc/hbase</value> 
</property> 

<property> 
<name>hbase.zookeeper.property.rootDir</name> 
<value>/home/abc/zookeeper</value> 
</property> 
</configuration> 

现在我的hbase shell工作正常,它创建表。我可以把价值观并得到它们。

主要问题:

由于我使用的是Windows声明,所以我在Java在Eclipse上写了一个简单的程序,达到HBase的(这基本上是虚拟盒)。但我得到以下异常:

Exception in thread "main" org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately. This could be a sign that the server has too many connections (30 is the default). Consider inspecting your ZK server logs for that error and then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information. 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:155) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:990) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:303) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:294) 
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:168) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:146) 
    at HBaseConnector.main(HBaseConnector.java:151) 
Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) 
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1021) 
    at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1049) 
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.createAndFailSilent(ZKUtil.java:903) 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:133) 

我的代码: 代码中的主要功能是这样的:

Configuration config = HBaseConfiguration.create(); 
HTable table = new HTable(config, "myLittleHBaseTable"); 
Put p = new Put(Bytes.toBytes("myLittleRow")); 

我想要什么?

我在做什么错? 我有没有办法从Windows Java程序访问hbase(驻留在虚拟框中)?

PLUS:

我研究以前提出的问题,但他们都不是为我工作。

任何帮助将非常感激。

+0

您的虚拟盒ubuntu实例配置为接受外部连接吗?运行ifconfig并检查“eth0”接口是否正常工作。如果没有,试试这个:https://help.ubuntu.com/10.04/serverguide/network-configuration.html – Aritra 2014-09-23 19:32:16

+0

是的,当我做ifconfig时,它显示有关eth0和lo的信息。 – Mr37037 2014-09-23 19:37:34

+0

很酷..现在检查你的防火墙设置。你可以通过Windows远程登录虚拟机的端口吗?你可能需要类似cygwin的东西。 – Aritra 2014-09-23 19:39:52

回答

0

您是否尝试将虚拟箱的网络设置设置为“桥接适配器”而不是“NAT”, ,然后从您的主机系统尝试打开浏览器并键入“guestIP:Hbase_Master_Port”(192.168.1.100 :例如60010)它应该打开主管理页面。