一 前言
前面两篇博客Linux 下伪分布式方式安装hadoop-2.9.2和Linux伪分布式模式安装hbase-2.2.4
介绍了如何在linux下伪分布式的方式安装hadoop和hbase。接下来就是用java api 访问进行CRUD操作了。java api 用的是hbase-client-2.2.4。代码就不贴了,网上很多。结果就报错了,害~
错误如下:
org.apache.hbase.thirdparty.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:16000
二 解决过程
于是乎网上搜索解决办法,找了一阵发现需要做以下修改:
假设你安装hbase的服务器的ip是192.168.66.23,hostname是test-hbase
(1)在本地winsows的hosts文件 C:\Windows\System32\drivers\etc 中添加
192.168.66.23 test-hbase
(2)linux /etc/hosts中添加
192.168.66.23 test-hbase
(3)linux中输入hostname命令查看linux 的hostname,如果不是test-hbase,则输入命令
hostname test-hbase
临时改变linux服务器的hostname
(4)重启hbase,进行连接,还是报上面的错误。
真是一顿操作猛如虎…
网上继续寻找解决方法。
三 最终篇
输入命令
netstat -anptl | grep 16000
结果如下
16000端口绑定了本地ip 127.0.0.1
问题的根源找到了!
解决办法:
hbase的配置文件hbase-site.xml中添加配置
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
指定ip,然后重启hbse,
java api调用成功。