一 前言
前面兩篇博客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調用成功。