docker 上多开 hbase远程连接

把 hbase 分享给同学用后,突然想到能不能在 docker 上多开 hbase,然后远程连接。
首先要了解相关 api 的运行机制。
我们通过

conf= HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","39.99.156.XXX");
conf.set("hbase.zookeeper.property.clientPort","2181");

创建的连接,会向服务器对应的端口发送请求,然后再映射到 docker 容器上的端口,然后 hbase 会发送给客户端一个 Hostname以及对应master端口,然后客户端通过Hostname以及端口的方式连接 master。
所以关键只需要做两件事:
1. 修改 docker 的宿主端口映射
2. 修改 docker 内容器的 hbase的master端口

关于docker单纯搭建 hbase,网上 博客很多,这里就不介绍了

首先要有一个镜像
在这里插入图片描述
docker ps已经运行了一个容器
在这里插入图片描述
我们发现宿主的2181,16000端口都是已经绑定容器里对应的端口,也就是说这些端口都已经被占用了,所以新的容器我们要用新的宿主端口映射到 容器。

  1. 使用如下命令
docker run -d -h myhbase1 -p 2182:2181 -p 8081:8080 -p 8086:8085 -p 9091:9090 -p 9096:9095 -p 16001:16001 -p 16011:16011 -p 16202:16202 -p 16302:16302 --name hbase1 harisekhon/hbase

这里已经运行了两个容器

这个命令把宿主的2182端口映射到容器的’2181’端口,也就是说我们只要访问宿主的 2182端口,就可以进入容器的2181端口。

  1. 进入容器修改master服务端口
    首先进入容器
docker exec -it hbase1 bash

然后进入到 hbase 的配置文件里面修改端口

vi /hbase/conf/hbase-site.xml

增加如下配置

<property>
    <name>hbase.master.port</name>
    <value>16001</value>
  </property>

然后重启 hbase

stop-hbase.sh
start-hbase.sh

然后在本地增加 hosts 映射
在这里插入图片描述
然后代码就只要修改

conf= HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","39.99.156.XXX");
        //把端口修改为2182就行了!
        conf.set("hbase.zookeeper.property.clientPort","2182");

在这里插入图片描述

其实还没改完,其他端口的修改也是同样的思路,都在配置文件里修改端口,以及端口映射。

猜你喜欢

转载自blog.csdn.net/qq_39921637/article/details/105876300