导入:虽然有虚拟机,但是懒得再配啦,还没玩过Docker,这回玩一下
没有虚拟机还想在windows部署Hbase的有福啦
优势
- 无需手动安装 Java 或配置环境变量
- 一键启动 HBase + Thrift 服务
Docker安装
安装很简单啊,一点不用怕的
下载产品是Docker Desktop
安装此处省略…(没有什么需要注意的,如果实在怕自己安装有问题可以搜以下如何安装Docker)
安装好之后再注册一下或者直接使用github账号也没问题,之后就会出现以下页面
记得把左下角这个小东西启动起来
接下来就可以部署Hbase了👇
部署Hbase步骤
在命令行操作,以管理员身份运行
-
拉取Hbase镜像
docker pull harisekhon/hbase
首次拉取不是这样的,但是差不多
-
启动容器(包含 HBase + Thrift 服务)
docker run -d -p 9090:9090 -p 8080:8080 --name hbase harisekhon/hbase
-p 9090:9090
: 映射 Thrift 端口(Python 通过此端口连接)
-p 8080:8080
: HBase Web UI 端口
注意这里是你一会要用到的端口
此时再去查看你的Docker界面就会发现多出来点东西,这就是你刚刚启动成功的效果
-
验证容器状态
docker ps -a
确认容器状态为 Up
通过以上步骤你的Docker就成功部署好Hbase啦(为了完成NoSQL偷点懒没关系吧QAQ)
简单测试
我写个作业简单测试一下:
简单
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()
# insert_data() # ← 你可以取消这行注释来测试插入数据
delete_table()
if __name__ == '__main__':
main()
得到了正确的输出!