当前位置: > > > HBase - 解决HBase Client无法连接远程HBase Server问题

HBase - 解决HBase Client无法连接远程HBase Server问题

1,问题描述

(1)在远程服务器上搭建了个HBase 服务,并且在服务器上使用 hbase shell 命令行工具可以成功进行建表、插入数据、查询数据等操作。
(2)但是发现在项目中使用 HBase Client 能够成功与 Zookeeper 连接,却无法与 HBase Server 连接,错误信息如下:

2,问题原因

(1)HBase 启动之后会将 Master 的信息存储在 Zookeeper /hbase/master 中,然后 HBase Client 连接到 Zookeeper 后首先会从 Zookeeper 中获取 Master IP 和端口信息,然后才和 Master 建立连接。
(2)但是 /hbase/master 存储的可能是一个别名(例如 localhost 或者其他),如果客户端拿到 localhost 或者其他没有记录在 hosts 的别名,那么客户端将会无法连接到 HBase Server
(3)从上面截图可以看到,访问的别名确实是 hostname=localhost,那么自然无法连接成功。通过 HBase Web UI 也可以看到 Server 确实是 localhost

3,解决办法

(1)首先登录服务器,执行如下命令将主机名字改成 master(改成其他也行,只要不是 localhost
hostnamectl set-hostname master

(2)接着执行如下命令编辑 /etc/hosts 文件:
vi /etc/hosts

(3)将 127.0.0.1 的别名设置为 master

(4)保存退出后重启服务器,可以看到主机名已经变成 master 了:

(5)通过 HBase Web UI 也可以看到 ServerName 也变成了 master: 

(6)服务器设置完毕后,本机客户端的 hosts 文件加上也要加上 HBase 服务器对应的 hosts,这样客户端就可以连上 HBase 服务了:
评论0