hbase单机模式下,使用java API远程连接hbase的问题。 100
最近需要使用hbase作为数据库,所以想自己研究下hbase。不过最近遇到一个问题,很多天也没找到答案。首先描述一下我的机子。普通的PC机,系统为win7,在win7里装...
最近需要使用hbase作为数据库,所以想自己研究下hbase。不过最近遇到一个问题,很多天也没找到答案。
首先描述一下我的机子。普通的PC机,系统为win7,在win7里装了个虚拟机,运行ubuntu10,虚拟机里装了hadoop和hbase,两者全部运行成功,使用hbase shell和在虚拟机里使用JAVA API操作hbase都没问题。
但是问题就是我想直接使用PC机中的JAVA API(也就是win7)直接操作虚拟机里的hbase,就怎么都不行了。
贴上我的配置。
hbase-site.xml大致如下
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.235.134:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.235.134</value>
</property>
/etc/hosts大致如下
192.168.235.134 localhost ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
PC机(即win7上)的JAVA API中的hbase-site.xml大致如下
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.235.134:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.235.134</value>
</property>
求hbase大神告知一下这是什么回事。PC机里JAVA代码大致如下。
HBaseAdmin.checkHBaseAvailable(HBaseConfiguration.create());
错误如下:
org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.ConnectException: Connection refused: no further information
其实本人跟了源码,发现zookeeper在获取master地址时总返回localhost,问题应该就在这。找不到master,看源码里,是去请求了/hbase/hbaseid这个玩意,这到底是什么东西? 展开
首先描述一下我的机子。普通的PC机,系统为win7,在win7里装了个虚拟机,运行ubuntu10,虚拟机里装了hadoop和hbase,两者全部运行成功,使用hbase shell和在虚拟机里使用JAVA API操作hbase都没问题。
但是问题就是我想直接使用PC机中的JAVA API(也就是win7)直接操作虚拟机里的hbase,就怎么都不行了。
贴上我的配置。
hbase-site.xml大致如下
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.235.134:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.235.134</value>
</property>
/etc/hosts大致如下
192.168.235.134 localhost ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
PC机(即win7上)的JAVA API中的hbase-site.xml大致如下
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.235.134:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.235.134</value>
</property>
求hbase大神告知一下这是什么回事。PC机里JAVA代码大致如下。
HBaseAdmin.checkHBaseAvailable(HBaseConfiguration.create());
错误如下:
org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.ConnectException: Connection refused: no further information
其实本人跟了源码,发现zookeeper在获取master地址时总返回localhost,问题应该就在这。找不到master,看源码里,是去请求了/hbase/hbaseid这个玩意,这到底是什么东西? 展开
2个回答
展开全部
首先你应该看Master进程是否已经成功启动,检查下master的60010监控界面。这日志报的是连接拒绝 ,或者关闭防火墙
极有可能是你PC机网络无法连接到虚拟机里边,你可以从本机telnet下虚拟机上master的端口,看下能连上不
极有可能是你PC机网络无法连接到虚拟机里边,你可以从本机telnet下虚拟机上master的端口,看下能连上不
更多追问追答
追问
进程成功启动,已经说了,在虚拟机里使用shell和java api都能成功访问,而且60010我也进去看了,是可以打开的。此外,你说的telnet一下的方法我试了,可以打开。现在的问题是java远程API访问不了。问题是zookeeper能连接上,但zookeeper返回的master rpcserver地址总是localhost,所以当然连接被拒绝了。如果能返回虚拟机主机名或IP应该就行了。
追答
那你本地的hbase-site.xml和虚拟机上配置文件是一致的么?
hbase.master
192.168.235.134:60000
另外你试下hbase.cluster.distributed为true,配成伪分布式,我最早开始鼓捣hbase的时候就用的伪分布式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哥么,这个问题解决了吗?我也遇到类似的问题啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询