从 windows java 应用程序访问虚拟盒 hbase

Posted

技术标签:

【中文标题】从 windows java 应用程序访问虚拟盒 hbase【英文标题】:Access virtual box hbase from windows java application 【发布时间】:2014-09-23 19:10:05 【问题描述】:

嗨,我是 hbase 的新手,正在尝试练习它。首先,我想描述一下系统配置。 背景:

我使用的是 Windows 7 并安装了 Oracle Virtual Box。然后在 Virtual Box 上安装了 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)

我的代码: main函数中的代码如下:

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

我想要什么?

我做错了什么? 我有什么方法可以从 windows java 程序访问 hbase(驻留在虚拟框上)?

加:

我研究了以前提出的问题,但没有一个对我有用。

任何帮助将不胜感激。

【问题讨论】:

您的虚拟盒子 ubuntu 实例是否配置为接受外部连接?运行 ifconfig 并检查“eth0”接口是否工作。如果没有,试试这个:help.ubuntu.com/10.04/serverguide/network-configuration.html 是的,当我执行 ifconfig 时,它会显示有关 eth0 和 lo 的信息。 cool..现在检查您的防火墙设置。您可以从 Windows 远程登录到 VM 中的端口吗?你可能需要像 cygwin 这样的东西。 我假设你已经看到了这个:***.com/questions/7337457/… 是的,也这样做了,但仍然面临同样的问题 【参考方案1】:

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

【讨论】:

以上是关于从 windows java 应用程序访问虚拟盒 hbase的主要内容,如果未能解决你的问题,请参考以下文章

新功能:虚拟机配置Windows Sandbox沙盒模式

无法使用 Edge 访问我的本地虚拟盒托管站点(适用于 Chrome/Firefox/IE11)

Windows虚拟目录配置帮助上的apache

添加Windows 10开机启动项:No Hyper-V

从 Docker 容器中的 Java 应用程序访问 Windows 10 中的文件夹

Google Drive / Dropbox API / RemoteStorage 应用程序的目录沙盒访问?