要学习HBase,需要架设一个集群,一个单节点的集群,Docker当然是首选。
一、拉取镜像
docker pull harisekhon/hbase
二、运行容器
docker run --name hbase -itd \
-h hbase-server \
-p 2181:2181 \
-p 8080:8080 \
-p 8085:8085 \
-p 9090:9090 \
-p 9095:9095 \
-p 16000:16000 \
-p 16010:16010 \
-p 16020:16020 \
-p 16201:16201 \
-p 16030:16030 \
-p 16301:16301 \
harisekhon/hbase
三、查看页面
http://hbase.chris.com:16010/master-status
填坑记:
搭建过程貌似简单地像个一,但是其实很久没搞定。最大的坑就是,进入容器,在hbase shell中想怎么操作都是对的,和Java整合,怎么弄都不对。总是提示一个hbase-server找不到的问题。
最后的解决途径,很简单,就是在本地的hosts加上容器主机名的映射。多么简单,但是又很荒唐......
我们的容器是运行在宿主机中的,端口是映射出来的。为什么要把容器的主机名映射到宿主机的IP上呢?如果我们在云服务器上面去部署一个Docker容器,岂不是要把容器的主机名设置为宿主机的域名?
所以搞不懂镜像的设计者这样设计的目的是什么。主机名称是本地使用的,跟域名本来是没有直接关系的,这样一来还会造成冲突。想找找途径去改掉这个绑定关系,但是没有找到,各种配置文件都没有涉及这个。网上也没有相关资料。看来解决问题还有待贵人相助了。