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

相关推荐
阿里云大数据AI技术29 分钟前
ODPS 十五周年实录 | 为 AI 而生的数据平台
大数据·数据分析·开源
哈哈很哈哈2 小时前
Spark 运行流程核心组件(三)任务执行
大数据·分布式·spark
我星期八休息3 小时前
大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
大数据·人工智能·python
最初的↘那颗心4 小时前
Flink Stream API - 源码开发需求描述
java·大数据·hadoop·flink·实时计算
白鲸开源4 小时前
收藏!史上最全 Apache SeaTunnel Source 连接器盘点 (2025版),一篇通晓数据集成生态
大数据·数据库·开源
爱疯生活4 小时前
车e估牵头正式启动乘用车金融价值评估师编制
大数据·人工智能·金融
Lx3525 小时前
MapReduce作业调试技巧:从本地测试到集群运行
大数据·hadoop
计算机程序员小杨5 小时前
计算机专业的你懂的:大数据毕设就选贵州茅台股票分析系统准没错|计算机毕业设计|数据可视化|数据分析
java·大数据
BYSJMG5 小时前
计算机大数据毕业设计推荐:基于Spark的气候疾病传播可视化分析系统【Hadoop、python、spark】
大数据·hadoop·python·信息可视化·spark·django·课程设计
励志成为糕手6 小时前
大数据MapReduce架构:分布式计算的经典范式
大数据·hadoop·mapreduce·分布式计算·批处理