hbase是hadoop生态中的一员,最早搭建hbase,需要先安装hadoop,然后安装zookeeper,再安装hbase。现在通过docker可以直接安装hbase,而且容器中并不需要hadoop。
# 查找镜像
docker search hbase
# 拉取镜像
docker pull harisekhon/hbase:latest
# 未指定主机名
docker run -d --name hbase -p 2181:2181 -p 16010:16010 -p 16020:16020 -p 16030:16030 harisekhon/hbase:latest
# 指定主机名
docker run -d -h hbase \
-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 16301:16301 \
--name hbase harisekhon/hbase:latest
这里注意一点,对于端口映射,hbase用到了很多端口,有的地方直接使用-P参数,而不是用-p做端口一一映射。
同时,-h选项中的参数hbase名字不要修改,否则会连不上节点。
docker run -d --name hbase -P harisekhon/hbase
如果通过-P参数,会将容器内部所有监听的端口都映射为随机端口,我们可以看看容器状态:
其中,16010端口是hbase提供的webui界面暴露的端口,映射为了32770,我们可以通过虚拟机地址,以及这个端口访问hbase webui。
hbase webui的地址如下:
http://192.168.80.130:16010/master-status
到了这里,通过web界面能够看到hbase状态,然后,可以进入容器,运行hbase shell,执行建表,添加数据,扫描数据都没有问题。但是如果外部程序,比如java需要操作hbase,就非常麻烦。
所以,这里不建议直接使用-P(大写)的方式启动hbase。
推荐的启动方式:docker run -d –name hbase -p 2181:2181 -p 16010:16010 -p 16020:16020 -p 16030:16030 harisekhon/hbase
不推荐的启动方式:docker run -d --name -P harisekhon/hbase
# 进入容器
docker exec -it hbase /bin/bash
# 启动shell
hbase shell
# 查看表名列表
list
# 创建表
# 语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
create 'userinfo',{NAME => 'user', VERSIONS => 2},{NAME => 'score', VERSIONS => 2}