背景:
我在使用 scala 编写一个单元测试,要求自动化的完成写入和读取 Docker 环境下的 Hbase 。
这个是我自己编译的 https://hub.docker.com/r/geekyouth/hbase
启动参数:
docker run -d --name hbase --hostname hbase -p 2181:2181 -p 16000:16000 -p 16010:16010 -p 16020:16020 geekyouth/hbase:2.3.3
其中,连接 Hbase 的参数包含如下:
hbase.master: 127.0.0.1:16010
hbase.zookeeper.quorum: 127.0.0.1
hbase.zookeeper.property.clientPort: 2181
zookeeper.znode.parent: /hbase
必须在 hosts 文件配置如下,才能正常连接 hbase 读写:
127.0.0.1 hbase
现在的需求是,不允许修改 hosts 文件,如何实现本地开发机器上运行单元测试来读写 docker 容器中的 hbase ?
Hbase 的通信机制,其连接 Regionserver 是通过 Hostname:Port 的形式来连接的,zookeeper 返回的地址就是( Hostname:Port:startID )的格式,可以在 zk 上面找到( list /hbase/rs )。因此如果我们使用的是 Docker 容器本身 hostname,显然是无法通过客户端连接到 Hbase 的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.