Hadoop中HBase命令行操作

HBase提供了Shell命令行,功能类似于Oracle、MySQL等关系库的SQL Plus窗口那样,用户可以通过命令行模式进行创建表、新增和更新数据,以及删除表的操作。

采用的底层存储为HDFS。使用Hbase客户端操作,执行查看Hbase版本、状态、查看帮助命令。创建表、修改表、插入数据、删除数据、查询数据,清空表、退出Hbase命令行、停止HDFS服务。

1.启动HDFS服务进程和hbase服务进程,进入MoBaXterm

切换用户

root@hadoop00 \~\]# su - hadoop 启动hdfs \[hadoop@hadoop00 \~\]$ start-dfs.sh 启动HBase \[hadoop@hadoop00 \~\]$ start-hbase.sh ![](https://file.jishuzhan.net/article/1749955256646635521/7412958d864f32272532e22b9daa8b9c.webp) 查看进程 \[hadoop@hadoop00 \~\]$ jps ![](https://file.jishuzhan.net/article/1749955256646635521/47894f66553b1821d6bcbb7927e0ae39.webp) #### 2.进入hbase 命令行客户端 \[hadoop@hadoop00 \~\]$ hbase shell ![](https://file.jishuzhan.net/article/1749955256646635521/ef127f34d87d0de7076cd7fd136a43a8.webp) #### 3.利用help查看Hbase有哪些命令,部分截图如下 hbase(main):001:0\> help ![](https://file.jishuzhan.net/article/1749955256646635521/b50288b62d604f155c42ffdf261c2e0f.webp) #### 4.查看某一组命令下的所有命令的简介和简单示范,如查看ddl。部分截图如下 hbase(main):003:0\> help 'ddl'` ` ![](https://file.jishuzhan.net/article/1749955256646635521/a46e49f8e3f6cae0d5643cf7becdd7ca.webp) #### 5.查看某个命令的详细使用,如create。部分截图如下 hbase(main):004:0\> help create ![](https://file.jishuzhan.net/article/1749955256646635521/791aec78cb5f7f3425ef492980385ece.webp) #### 6.使用general组中的命令。查看集群的状态 hbase(main):005:0\> status ![](https://file.jishuzhan.net/article/1749955256646635521/1e6769e15a4843ab1a5fe0423d7768ac.webp) #### 7.使用general组中的命令。查看集群的版本 hbase(main):005:0\> version ![](https://file.jishuzhan.net/article/1749955256646635521/cd40bef601b9345276d2c81452c159a8.webp) #### 8.使用general组中的命令。查看当前登录用户的角色信息 hbase(main):005:0\> whoami ![](https://file.jishuzhan.net/article/1749955256646635521/1f60933b8336a1cfe88450e68f6e5932.webp) #### 9.使用general组中的命令。查看对表进行操作的基本命令。部分截图如下 hbase(main):004:0\> table_help ![](https://file.jishuzhan.net/article/1749955256646635521/34bdeaf3bc8c99a3877e4abc435857fd.webp) #### 10.使用ddl组中的命令。创建表。格式为:# create '表名', '列族1', '列族2'... #### 创建person表,列族为name和info hbase(main):005:0\> create 'person','name','info' ![](https://file.jishuzhan.net/article/1749955256646635521/6209b89db858ac45272f89fa8b6d4aef.webp) #### 11.上列也可以写成如下格式:create 'person',{NAME=\>'name' },{NAME=\>'info'} #### 12.打开桌面的谷歌浏览器,输入http://hadoop00:50070出现界面后,选中菜单最后一项,选择"Browse the file system" ![](https://file.jishuzhan.net/article/1749955256646635521/be4d6398063b37de3c1e429042e92dcf.webp) #### 13.出现如下界面,选择 ![](https://file.jishuzhan.net/article/1749955256646635521/b2783ac4b55c2ce305650a8d74285260.webp) 理解其文件结构参考: [https://blog.csdn.net/h1025372645/article/details/97814312](https://blog.csdn.net/h1025372645/article/details/97814312 "https://blog.csdn.net/h1025372645/article/details/97814312") [https://www.cnblogs.com/zhangwuji/p/9160301.html](https://www.cnblogs.com/zhangwuji/p/9160301.html "https://www.cnblogs.com/zhangwuji/p/9160301.html") #### 14.出现如下界面,此路径下即为存储表person的路径(/hbase/data/default/) ![](https://file.jishuzhan.net/article/1749955256646635521/dd100718274be73111358c8d32e26ee6.webp) #### 15.选择person,出现如下界面,红框处即为存储数据的region ![](https://file.jishuzhan.net/article/1749955256646635521/d3caf6ea12526a0050551f245dd5cbed.webp) #### 16.选择进入红框圈选的位置,出现如下图,可以看到,info和name即是我们创建表所指定列族存储的位置 ![](https://file.jishuzhan.net/article/1749955256646635521/a41027457470f7f6d0b6fdb6d41dc3ad.webp) #### 17.使用ddl组中的命令。创建表时指定列族版本,指定列族是否常驻内存。创建person1表,列族为name版本为4和info常驻内存 hbase(main):004:0\> create 'person1',{NAME=\>'name', VERSIONS=\>4 },{NAME=\>'info',IN_MEMORY=\>'true'} ![](https://file.jishuzhan.net/article/1749955256646635521/db5094f7390c0e7ab4805beda09769eb.webp) #### 18.使用ddl组中的命令。查看数据库有哪些表 hbase(main):001:0\> list ![](https://file.jishuzhan.net/article/1749955256646635521/ccd7f6e54a7777fcc79ce33cbfd79731.webp) #### 19.使用ddl组中的命令。查看表person1的属性信息,命令格式使用describe'person1' 或desc 'person1'。# 其中的属性的意义:NAME:列族名;VERSIONS:最大版 本号;MIN_VERSIONS:最小版本号;TTL(Time To Live):存活时间;IN_MEMORY:是否开启缓存,默认false;BLOCKCACHE:读缓存是否开启,默认开启。 hbase(main):001:0\> desc 'person1'![](https://file.jishuzhan.net/article/1749955256646635521/ef07e3b73e76d893753439cbbccb16c0.webp) #### 20.使用ddl组中的命令。修改表,增加列族。语法格式:alter 'table_name','add_family' 或者alter 'table_name', {NAME =\> 'add_family'} 当然,新增加的列可以设置属性,比如alter 'table_name', {NAME =\> 'add_family', VERSIONS =\> 3}设置表person1增加列族postion,版本为4 ``` alter 'person1', {NAME => 'position', VERSIONS => 4} ``` ``` alter 'person', {NAME => 'name', VERSIONS => 3} ``` #### 21.使用ddl组中的命令,查看表person1的属性信息。部分截图如下 ``` desc 'person1' ``` #### 22.使用ddl组中的命令。修改表,删除列族。语法格式:alter 'table_name', {NAME=\> 'delete_family', METHOD =\> 'delete'} 或者 alter 'table_name', 'delete' =\> 'delete_family' 设置表person1删除列族postion。 ``` alter 'person1', 'delete' => 'position' ``` #### 23.使用ddl组中的命令。禁用表语法为disable 'table_name' ``` disable 'person1' ``` #### 24.使用ddl组中的命令。禁用表语法为is_disabled 'table_name' ``` is_disabled 'person1' ``` #### 25.使用ddl组中的命令。启用表语法为enable 'table_name' ``` enable 'person1' ``` #### 26.使用ddl组中的命令。查看表是否启用表语法为is enabled 'table_name' is_enabled 'person1'![](https://file.jishuzhan.net/article/1749955256646635521/3257130e28205b43e5767039d0ea3b84.webp) #### 27.使用ddl组中的命令。删除表语法为drop 'table_name';在删除表前,需要先禁用表。 ``` disable 'person1' ``` ``` drop 'person1' ``` #### 28.使用dml组中的命令。插入数据语法为put '表名','rowkey','列族名:列名','值'。 #### 如插入表person,行键为0001,列族name的列名为firstname,值为Jed ``` put 'person','0001','name:firstname', 'Jed' ``` #### 29.使用dml组中的命令。插入数据语法为put '表名','rowkey','列族名:列名','值'。 #### 如插入表person,行键为0001,列族info的列名为hobby,值为Swim ``` put 'person','0001','info:hobby', 'Swim' ``` ``` put 'person','0001','name:firstname', 'Tom' ``` ``` put 'person','0001','name:firstname', 'Jim' ``` #### 30.使用dml组中的命令,根据行键查询某行。语法为get '表名','rowkey'。 如查询person,行键为0001。由于name:firstname列存储了三个版本,默认显示最新的值 ``` get 'person','0001' ``` #### 31.使用dml组中的命令,根据行键,指定列名查询某行。语法为get '表名','rowkey','列族:列名'。如查询person,行键为0001,列为name:firstname。由于name:firstname列存储了三个版本,默认显示最新的值 \[Command 025\]: ``` get 'person', '0001','name:firstname' ``` #### 32.使用dml组中的命令,查询person表中,rowkey为'0001'的这一行,只显示 #### name:firstname这一列,显示最新的3个版本 \[Command 026\]: ``` get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3} ``` #### 33.使用dml组中的命令,扫描person表 \[Command 027\]: ``` scan 'person' ``` #### 34.使用dml组中的命令,扫描person表时指定列族 \[Command 028\]: ``` scan 'person', {COLUMNS => 'name'} ``` #### 35.使用dml组中的命令,扫描person表时指定列族,并限定显示最新的2个版本 \[Command 029\]: ``` scan 'person', {COLUMNS => 'name',VERSIONS => 2} ``` #### 36.使用dml组中的命令,删除数据,语法格式为:delete 'table_name', 'rowkey','family:column'。如删除person表中行键为0001,列名为info:hobby对应的值。 \[Command 030\]: ``` delete 'person', '0001', 'info:hobby' ``` #### 37.使用dml组中的命令,扫描person表。可以看到info:hobby数据已经被删除。 \[Command 031\]: ``` scan 'person' ``` #### 38.使用dml组中的命令,查询person表中列族为name,行键范围是\[0001, 0003)的数据 \[Command 032\]: ``` scan 'person', {COLUMNS => 'name', STARTROW => '0001', ENDROW => '0003'} ``` #### 39.使用dml组中的命令,查询查询person表中row key以00字符开头的数据 \[Command 033\]: ``` scan 'person',{FILTER=>"PrefixFilter('00')"} ``` #### 40.使用dml组中的命令,清空表数据语法为:truncate 'table_name' \[Command 034\]: ``` truncate 'person' ``` #### 41.退出Hbase命令行 \[Command 035\]: ``` exit ```

相关推荐
问道飞鱼1 小时前
【大数据知识】今天聊聊Clickhouse部署方案
大数据·clickhouse·部署
金融小师妹4 小时前
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
大数据·人工智能·算法
武子康4 小时前
大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
大数据·人工智能·gpt·ai·语言模型·自然语言处理
2401_cf5 小时前
为什么hadoop不用Java的序列化?
java·hadoop·eclipse
qq_339282236 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
睎zyl8 小时前
Spark自定义分区器-基础
大数据·分布式·spark
巨龙之路8 小时前
【TDengine源码阅读】DLL_EXPORT
大数据·时序数据库·tdengine
元6339 小时前
搭建spark-local模式
大数据·spark
巨龙之路9 小时前
TDengine编译成功后的bin目录下的文件的作用
大数据·时序数据库·tdengine
莫叫石榴姐9 小时前
大模型在数据分析领域的研究综述
大数据·数据挖掘·数据分析