HBASE 的基础命令学习笔记

本篇文章主要是自己在学习 HBASE 的一些学习的笔记和心得,记录一下。

目录

[第一个关于 namespace](#第一个关于 namespace)

[关于DDL(Data Definition Language)](#关于DDL(Data Definition Language))

[创建表 :在bigdata命名空间中创建表格student,两个列族。info列族数据维护的版本数为5个,如果不写默认版本数为1。](#创建表 :在bigdata命名空间中创建表格student,两个列族。info列族数据维护的版本数为5个,如果不写默认版本数为1。)

如果创建表格只有一个列族,没有列族属性,可以简写。如果不写命名空间,使用默认的命名空间default。

[查看表有两个命令:list和 describe](#查看表有两个命令:list和 describe)

表名创建时写的所有和列族相关的信息,都可以后续通过alter修改,包括增加删除列族。

删除表,shell中删除表格,需要先将表格状态设置为不可用。

[关于 DML(Data Manipulation Language)](#关于 DML(Data Manipulation Language))

在HBase中如果想要写入数据,只能添加结构中最底层的cell。可以手动写入时间戳指定cell的版本,推荐不写默认使用当前的系统时间。

读取数据的方法有两个:get和scan。

删除数据的方法有两个:delete和deleteall。


首先先安装好 Linux 还有装好 Hadoop 的集群以及 HBASE ,将这些全部配置好。后期有时间有空会在发布一篇关于如何安装 Hadoop 的集群以及 HBASE。

在这里我已经完成相关的安装了。

先启动 hbase:

java 复制代码
zkServer.sh start
start-dfs.sh  # Hadoop运行模式也是伪分布模式
start-yarn.sh
start-hbase.sh
hbase shell

要先按照这个顺序依次对集群启动。jps 检查一下是不是启动了

第一个关于 namespace

使用特定的help语法能够查看命令如何使用。

创建命名空间 bigdata ,并查看所有空间:

java 复制代码
help 'create_namespace'
list_namespace

关于DDL(Data Definition Language)

创建表 :在bigdata命名空间中创建表格student,两个列族。info列族数据维护的版本数为5个,如果不写默认版本数为1。

java 复制代码
create 'bigdata:student', {NAME => 'info', VERSIONS => 17}, {NAME => 'msg'}

bigdata:student 表示表名,其中:

  • bigdata 是命名空间(类似数据库中的Schema),需提前创建。

  • student 是表名。若命名空间不存在,需先执行 create_namespace 'bigdata'

    HBase表中的数据按列族(Column Family)组织,每个列族可独立配置属性:

  • 第一个列族 info
    {NAME => 'info', VERSIONS => 17}

    • VERSIONS => 17 表示保留最多 17个历史版本 的数据,适用于需追溯历史记录的场景。
  • 第二个列族 msg
    {NAME => 'msg'}

    • 未显式指定 VERSIONS,默认保留 1个版本(仅最新数据)。

注意事项

  • 列族是物理存储单元,设计时应避免过多(通常不超过3个)。

  • 其他常用参数(如 TTL 数据过期时间、COMPRESSION 压缩算法)可按需添加。

如果创建表格只有一个列族,没有列族属性,可以简写。如果不写命名空间,使用默认的命名空间default。

复制代码
create 'student1', 'info'

查看表有两个命令:list和 describe

list:查看所有的表名。describe:查看一个表的详情

复制代码
list
describe 'student1'

表名创建时写的所有和列族相关的信息,都可以后续通过alter修改,包括增加删除列族。

增加列族和修改信息都使用覆盖的方法

java 复制代码
alter 'student1',{NAME=>'f1',VERSIONS=>3}

若列族 f1 已存在,此命令会修改其属性(如更新版本数)。没有则添加新的。

删除表,shell中删除表格,需要先将表格状态设置为不可用。

java 复制代码
disable 'student1'
drop 'student1'

关于 DML(Data Manipulation Language)

在HBase中如果想要写入数据,只能添加结构中最底层的cell。可以手动写入时间戳指定cell的版本,推荐不写默认使用当前的系统时间。

java 复制代码
put 'bigdata:student','1001','info:name','hanhan'
                                                           
 put 'bigdata:student','1001','info:name','憨憨'
                                                            
put 'bigdata:student','1001','info:age','18'

如果重复写入相同rowKey,相同列的数据,会写入多个版本进行覆盖。

读取数据的方法有两个:get和scan。

get最大范围是一行数据,也可以进行列的过滤,读取数据的结果为多行cell。也可以修改读取cell的版本数,默认读取一个。最多能够读取当前列族设置的维护版本数。

Go 复制代码
get 'bigdata:student','1001'

get 'bigdata:student','1001',{COLUMN=>'info:name'}

get 'bigdata:student','1001',{COLUMN=>'info:name' VERSIONS=>3}

scan是扫描数据,能够读取多行数据,不建议扫描过多的数据,推荐使用startRow和stopRow来控制读取的数据,默认范围左闭右开。

删除数据的方法有两个:delete和deleteall。

delete表示删除一个版本的数据,即为1个cell,不填写版本默认删除最新的一个版本。

html 复制代码
delete 'bigdata:student','1001','info:name'

deleteall表示删除所有版本的数据,即为当前行当前列的多个cell。(执行命令会标记数据为要删除,不会直接将数据彻底删除,删除数据只在特定时期清理磁盘时进行)

Go 复制代码
deleteall 'bigdata:student','1001','info:name'

未完待续......

如果文章对你有帮助,记得 点赞、收藏、关注👍⭐🧧

相关推荐
MartinYeung51 小时前
[论文学习]PoisonBench:评估语言模型对投毒偏好数据的脆弱性
人工智能·学习·语言模型
是枚小菜鸡儿吖2 小时前
把视频教程变成可复习的笔记:Docker 部署 BiliNote,自动转写与总结
笔记·docker·容器
运维全栈笔记3 小时前
Vue + Spring Boot 前后端分离项目部署笔记(若依 RuoYi-Vue 3.9.2)
运维·服务器·vue.js·spring boot·笔记·开源·开源软件
Data_Journal7 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
涤生大数据7 小时前
一次“没有运行日志”的DolphinScheduler任务失败排查
大数据·数据库·人工智能·状态模式
专注API从业者8 小时前
告别人工盯品!借助 Open Claw 搭建电商商品自动化监控与数据分析系统(完整可运行源码)
大数据·运维·数据库·数据分析·自动化
xian_wwq9 小时前
【学习笔记】-深度认知系列-第1讲-AI不是魔法——三句话讲清楚人工智能到底是什么
笔记·学习·深度认知
M78佐菲9 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
别动我齐刘海10 小时前
机器人运动控制学习4——状态估计 State Estimation
c++·人工智能·学习·目标检测·机器学习·机器人·自动驾驶
狂云歌10 小时前
2025年读书回顾,AI+游戏+历史
人工智能·学习·游戏