解决Java API不能远程访问云服务器上的HBase问题

在腾讯云装了hadoop的伪集群和hbase的伪集群之后,在本地使用Javaapi连接调用hbase时,出现启动程序后,程序出现卡死的状态,没报错也不停止,大约半分钟后才打印一堆日志出来,说连接重试了多次也连接不上,截图如下:

解决Java API不能远程访问云服务器上的HBase问题

通过查询看到有一个博主说是 ‘’HBase绑定的是本地IP:127.0.0.1,这当然访问不了

在腾讯云上执行:netstat -anp | grep 16000  如下:

解决Java API不能远程访问云服务器上的HBase问题

发现我腾讯云中的地址真的指向了本地

 

解:

分下面三步走,即可访问

1、配置Linux的hostname

2、配置Linux的hosts,映射ip的hostname的关系

3、配置访问windows的hosts

 

配置Llinux的hostname和hosts,这样HBase启动的时候,就会自动把HBase绑定到Linux域名对应的ip上去

1.配置Linux的hostname

这里配置的hostname要Linux重启才生效,为了不重启就生效,我们可以执行:hostname master命令,暂时设置hostname

2.配置Linux的hosts

映射ip的hostname的关系

解决Java API不能远程访问云服务器上的HBase问题

配置完Linux的这两项,启动HBase就发现HBase绑定到了我们想暴露的ip上了

解决Java API不能远程访问云服务器上的HBase问题

但是到这步出现了一个问题hbase报错

ERROR: Can't get master address from ZooKeeper; znode data == null

我感觉是腾讯云中的这个hosts文件配置完后映射关系对应不上,因为云服务器中的IP地址对外提供的和实际的IP地址不是一个只不过是腾讯云安全组映射到我们实际的IP,所以我将这一步还原回去后我的映射关系就正常了如下:

解决Java API不能远程访问云服务器上的HBase问题

 

3.配置访问windows的hosts

路径为:C:\Windows\System32\drivers\etc\hosts

解决Java API不能远程访问云服务器上的HBase问题

配置完这三项Java API就可以远程访问HBase了,切记最后配置windows的hosts也是必须的

 

最后Java api测试成功调用腾讯云上部署的hbase集群如下:

解决Java API不能远程访问云服务器上的HBase问题