【问题标题】:Cannot Connect to HBase Server from Java Code无法从 Java 代码连接到 HBase 服务器
【发布时间】:2013-09-04 02:46:30
【问题描述】:

我已经在运行 Ubuntu 的 VirtualBox VM 上安装了 Hadoop 和 Hbase; Hadoop 和 Hbase 都在伪分布式模式下成功运行。我在 Ubuntu 上禁用了 IPv6,并将 VM 上的 hosts 文件中的 localhost 更改为 127.0.0.1。

我正在尝试在 Eclipse 中的 Windows 机器上编写一些基本的 Java 代码,以连接到 Hbase 实例、创建表、插入和检索数据等。代码失败并出现无法连接到主服务器的错误。但是,它使 Zookeeper 与 VM 的连接很好。

在 Windows 机器上,我可以通过 Web 浏览器通过我在 Java 代码中指定的相同 IP 地址和端口连接到 Hbase 实例信息。

我到处搜索并尝试了所有我能找到的东西,但是在它建立 zookeeper 连接后仍然无法连接到 master。

我读到其他人也遇到过这个问题,但没有人发布解决方案。

请帮忙!谢谢!

【问题讨论】:

  • 能否给我看看错误日志?
  • 你能从你的主机ping到虚拟机吗?
  • 嗨 -- 是的,我可以从主机 ping 虚拟机。我现在不在我的机器上,所以我会在返回时发布错误日志。

标签: java hadoop hbase


【解决方案1】:

用于查看信息的 IP 和端口不是用于读取/写入 HBase 的 IP 和端口。为此,您需要使用 REST API(包含在 HBase 中)或 Apache Thrift(HBase 中包含 2 个 thrift 服务器 - thrift 和 thrift2)

我会推荐你​​使用 Apache Thrift (thrift2)

要开始使用 REST:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start rest

开始 Thrift 使用:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start thrift

要启动 Thrift (v2),请使用:

$HBASE-INSTALL-DIR/bin/hbase-deamon.sh start thrift2

例如,要使用 Java 中的 Thrift 客户端,您需要在服务器上install thrift,然后使用 HBase 中包含的 hbase thrift 文件生成 Java 类。

默认情况下 Thrift 将监听 9090 端口和 8080

上的 REST

有用的链接:

HBase Thrift

HBase REST

【讨论】:

  • 嗨——如果我必须使用 Thrift 从我的 Java 代码远程读/写到 Hbase,你能解释一下 Java API 进入图片的位置吗?谢谢!
  • Thrift由三个实体组成,服务端、客户端和thrift self(这个只用于生成客户端),服务端已经自带hbase,使用上面的命令启动,客户端可以是多种语言(在您的情况下为 Java),此客户端是您在项目中集成的一组类,用于连接到 hbase 并执行您的操作。要获取这些 Java 类,您需要下载 thrift,并使用 hbase.thrift 文件(这是描述 hbase 可以做什么的配置文件)来生成这些类。
【解决方案2】:

好的 -- 有人给了我一些解决问题的 1-1 帮助,我想把它传递下去。原来是虚拟机和我的 Windows 机器的 IP 寻址问题。首先,在 VM 上的 etc/hosts 文件中,我必须取出“127.0.0.1 locahost”并插入“localhost”。其次,在我的 Windows 主机文件中,我必须添加“”。值得庆幸的是,这解决了问题。请让我知道这还不清楚,因为我已经多次看到这个问题没有合适的解决方案。此外,由于我正在编写 Java 代码来访问 VM 中的 HBase 实例,因此无需使用 Thrift 或 REST——Java API 就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多