首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hbase伪分布式远程连接

hbase伪分布式远程连接
EN

Stack Overflow用户
提问于 2012-01-26 07:43:52
回答 1查看 1.9K关注 0票数 3

我设置了HBase和HDFS,并在伪分布式模式下工作(在Mac上)。我还有一个简单的Java应用程序。在本地使用时,它可以正常工作。我想让它远程工作。服务器隐藏在路由器后面,所有必要的端口都已转发。

当我尝试远程连接时,我得到:

代码语言:javascript
复制
...
12/01/25 23:21:15 INFO zookeeper.ClientCnxn: Session establishment complete on server 
remote.host.com/remoteip:53058, sessionid = 0x13516f179a30005, negotiated timeout = 40000
12/01/25 23:21:36 INFO client.HConnectionManager$HConnectionImplementation: getMaster attempt 
0 of 10 failed; retrying after sleep of 1000
java.net.SocketTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=192.168.52.53/192.168.52.53:58023]

对我来说,这意味着Zookeeper连接,但给客户端提供了错误的地址: 1)因为它是本地的2)因为它在错误的端口上

我尝试通过在HDFS core-site.xml (fs.default.name)和hbase-site.xml (hbase.rootdir)中设置远程地址来修复问题#1。HDFS不会绑定到远程地址。如果HDFS绑定到本地并正常工作,则如果在hbase-site中提供了远程连接,则hbase将不会连接( ip和端口转发肯定有效,通过telnet检查)。我使用了/etc/ HBase -无论HDFS是否返回本地或远程地址,HDFS和HDFS都只在绑定到本地时启动。

我还尝试通过在hbase-site.xml中设置hbase.master.port来修复问题#2,无论我设置什么,HBase主服务器都绑定到一个随机端口。

我浪费了大量的时间来尝试做好这件事,检查了所有可能的来源,并尝试了所有可能的组合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-27 04:02:24

这种情况下的常见问题是,您期望可以从NAT防火墙外部通过单个IP地址访问HBase。虽然这可能是可能的,但它很难设置,而且几乎肯定不受支持。

当客户端连接到HBase时,发生的第一件事就是连接到ZooKeeper以确定哪台计算机承载了他们正在查找的表(或者哪台计算机是当前的主计算机,如果您正在执行管理操作,这里似乎就是这种情况)。

然后客户端直接连接到远程机器。如果远程机器(特别是HBase RegionServers )位于NAT路由器之后,并使用其内部IP向ZooKeeper报告自身,则路由器外部的机器无法解析防火墙内的RegionServer的IP。

使HBase通过NAT工作的唯一合理方法是通过代理来引导所有外部请求。有两种选择--节俭和休息。有关代理的更多信息,请访问:http://ofps.oreilly.com/titles/9781449396107/clients.html

顺便说一句,您几乎不需要这种设置--所有客户机都应该能够直接与RegionServers通信,这样您就不会在HBase代理服务器上遇到瓶颈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9012111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档