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 ```

相关推荐
理智的煎蛋21 分钟前
es 原生linux部署集群
大数据·linux·服务器·elasticsearch
谬了个大也26 分钟前
es --- 集群数据迁移
大数据·elasticsearch
張萠飛2 小时前
flink cdc的source数据流如何配置事件时间,如何设置时间语义,分配时间戳并生成水位线
大数据·flink
一只专注api接口开发的技术猿3 小时前
京东API智能风控引擎:基于行为分析识别恶意爬虫与异常调用
大数据·开发语言·前端·爬虫
三品PLM系统5 小时前
三品PLM研发管理软件如何构筑制造企业全产品生命周期管理?
大数据·运维·人工智能·安全·制造
曼岛_6 小时前
CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题)
linux·docker·centos
Fanche4047 小时前
Linux-CentOS-7—— 安装MySQL 8
linux·运维·数据库·mysql·centos
爱编程的王小美7 小时前
数据一致性:MySQL、HBase和HDFS的协同
mysql·hdfs·hbase
viperrrrrrrrrr77 小时前
大数据学习(100)-kafka详解
大数据·学习·kafka
小吕学编程8 小时前
企业级开发SpringBoost玩转Elasticsearch
大数据·spring boot·elasticsearch·搜索引擎