Windows11使用Docker部署Hbase超详细过程

导入:虽然有虚拟机,但是懒得再配啦,还没玩过Docker,这回玩一下

没有虚拟机还想在windows部署Hbase的有福啦

优势

  • 无需手动安装 Java 或配置环境变量
  • 一键启动 HBase + Thrift 服务

Docker安装

安装很简单啊,一点不用怕的

下载网址:https://www.docker.com/

下载产品是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()

得到了正确的输出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值