Windows11使用Docker部署Hbase超详细过程
导入:虽然有虚拟机,但是懒得再配啦,还没玩过Docker,这回玩一下
没有虚拟机还想在windows部署Hbase的有福啦
优势
- 无需手动安装 Java 或配置环境变量
- 一键启动 HBase + Thrift 服务
Docker安装
安装很简单啊,一点不用怕的
下载网址:
下载产品是Docker Desktop

安装此处省略……(没有什么需要注意的,如果实在怕自己安装有问题可以搜以下如何安装Docker)
安装好之后再注册一下或者直接使用github账号也没问题,之后就会出现以下页面

记得把左下角这个小东西启动起来
接下来就可以部署Hbase了👇
部署Hbase步骤
在命令行操作,以管理员身份运行
-p 9090:9090: 映射 Thrift 端口(Python 通过此端口连接)
-p 8080:8080: HBase Web UI 端口
注意这里是你一会要用到的端口

此时再去查看你的Docker界面就会发现多出来点东西,这就是你刚刚启动成功的效果

确认容器状态为 Up

通过以上步骤你的Docker就成功部署好Hbase啦(为了完成NoSQL偷点懒没关系吧QAQ)
简单测试
我写个作业简单测试一下:
简单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| import happybase
TABLE_NAME = 'mytable'
def connect(): return happybase.Connection(host='localhost', port=9090)
def create_table(): conn = connect() if TABLE_NAME.encode() in conn.tables(): conn.delete_table(TABLE_NAME, disable=True) conn.create_table(TABLE_NAME, { 'mycf': dict() }) print(f"表 {TABLE_NAME} 创建成功,初始列族为 mycf") conn.close()
def modify_table(): conn = connect() if TABLE_NAME.encode() not in conn.tables(): print(f"表 {TABLE_NAME} 不存在,无法修改列族") return
families = conn.table(TABLE_NAME).families()
new_families = {} for cf in families: if cf == b'mycf': new_families['mycf'] = {'max_versions': 5} else: new_families[cf.decode()] = {}
new_families['newcf'] = {} conn.delete_table(TABLE_NAME, disable=True) conn.create_table(TABLE_NAME, new_families) print("成功添加列族 newcf,并修改 mycf 的 max_versions 为 5") conn.close()
def insert_data(): conn = connect() table = conn.table(TABLE_NAME) table.put(b'row1', {b'mycf:col1': b'value1'}) print("数据插入成功(如果取消注释 insert_data())") conn.close()
def delete_table(): conn = connect() if TABLE_NAME.encode() in conn.tables(): conn.delete_table(TABLE_NAME, disable=True) print("列族 mycf 已删除") print(f"表 {TABLE_NAME} 已删除") else: print(f"表 {TABLE_NAME} 不存在") conn.close()
def main(): create_table() modify_table() delete_table()
if __name__ == '__main__': main()
|

得到了正确的输出!