最近在重构公司的直播推荐服务,特征数据的存储使用的是 Hbase,但有个问题是我们的开发环境并没有搭建 HBase 集群,开发环境和生产环境网络又不通,这样本地调试就很不方便,所以我需要在本地搭一个 HBase 集群。
第一时间想到的就是使用 docker-compose
牛顿老师说过,轮子还是别人的圆,于是我在 gayhub 上找到了这个轮子:https://github.com/big-data-europe/docker-hbase
但是在搭建过程中发现了它的问题,有两个重要的端口没有在 docker-compose.yml
文件中开放,并且说明中没有提示要修改 hosts,再看了下这个仓库的更新时间,已经有 3 年没有更新,所以我也就不提 pr 了,而是将仓库进行了 fork 并修改了源码,可以直接 clone 我的仓库来搭建,流程如下:
1. 将代码 clone 到本地
1 | git clone [email protected]:Panmax/docker-hbase.git |
2. /etc/hosts 中添加以下两项
1 | 0.0.0.0 hbase-master |
3. 启动
1 | docker-compose -f docker-compose-distributed-local.yml up |
等待所有服务完全启动后,就可以让我们的程序通过监听在本地 2181 端口的 zookeeper 去发现并访问 hbase 了。
Hbase 数据录入
为了验证代码逻辑,我还需要写一些数据到 hbase 中,操作如下:
1. 进入容器
1 | docker exec -it hbase-master bash |
2. 进入 hbase 安装目录
1 | cd /opt/hbase-1.2.6/ |
3. 运行 hbase shell
1 | bin/hbase shell |
然后就可以使用SQL语句进行操作了,例如:
1 | > create 'mods_model_storage', 'f' |