HBase命令行接口的使用方法

HBase shell

  1. 进入退出
hbase shell #在任意节点都可以进入hbase shell
exit
  1. 查看帮助信息
help

通用命令

  1. 查询服务器状态,例如服务器的数量

    status
    
  2. 查询hbase版本

    version
    
  3. 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命令可查看当前用户

    whoami
    

DDL(Data Definition Language 数据定义语言)

创建一个表(create)

语法:create

, {NAME=>,VERSIONS=>}

例如:创建表t1,有两个family name:f1,f2,且版本均为2

create 't1',{NAME=>'f1',VERSIONS=>2},{NAME=>'f2',VERSIONS=>2}

注意点:

  • 区分大小写,NAME不能写成name
  • 表名,列名需要以字符串的形式输入,即用单引号修饰,如’t1’

还有一种非标准创建的语法,创建表member,列族是member_id,address,info,版本为1(默认版本)。如下:

create 'member','member_id','address','info'

获得表的描述/结构(describe)

语法:describe

list #列出所有的表
describe 'member' #查看表的描述 desc 'member'简写

删除一个列族,alter,disable,enable

alter 'member',{NAME=>'member_id',METHOD=>'delete'}#只能删除disabled的表的列族,没有添加列族
#将表enable,启用表
enable 'member'
#将表disabled,禁用表
disable 'member'

删表, drop

create 'temp_table','member_id','address','info'#创建一个示例
is_enabled 'temp_table' #查看是否可用
is_disabled 'temp_table' #查看是否禁用
drop 'temp_table' #只有被禁用的表才能被删除

删除并重新创建一个表

truncate 't1'

查询表是否存在

exists 'member'

查看文件存储路径

打开hdfs的web页面 /hbase/data/default/member

default是默认的命名空间,member是表名

DML(数据操纵语言)

插入/更新数据,put

语法:put <table(表名)> ,<RK(RowKey)>,<CF : CQ(列键)>,<value(值)>

put 'member' ,'guojing','info:company','alibaba'
put 'member' ,'guojing','info:age','24'
put 'member' ,'guojing','address:contry','china'
put 'member' ,'guojing','address:province','zhejiang'
put 'member' ,'guojing','address:city','hangzhou'

注:现在表的数据都在内存中,并没有落地到磁盘。如果这时候想要落地到磁盘只能手动落地

先插入MemStore,到达阈值和时间后才会插入内存,可以不运行flush,查看hdfs文件中相应表的info文件,为空,说明未插入内存。
命令: flush< table >

flush 'member'

更新一条数据

#将guojing的年龄更新为18,原数据还在原位置
put 'member','guojing','info:age','18'

实现加入数据的递增

#给'xiaofeng'这个RowKey增加'info:age'字段,并使用counter实现递增
incr 'member','xiaofeng','info:age'
get 'member','xiaofeng','info:age'
incr 'member','xiaofeng','info:age'
get 'member','xiaofeng','info:age'
#获取当前counter的值
get_counter 'member','xiaofeng','info:age'

查询数据,get

获取一个RowKey的所有数据(一行数据)
get < table> , < RK>

get 'member','guojing'


获取一个RowKey中,一个列族的所有数据

get 'member','guojing','info'

获取一个RowKey中,一个列键(列族:列)的所有数据

get 'member','guojing','info:age'

获取不同版本的数据

#通过timestamp获取不同版本的数据
get 'member','guojing',{COLUMN=>'info:age',TIMESTAMP=>1627474097682}

查询表中有多少行

count 'member'

全表扫描(scan)

scan < table >

#注:全表扫描时一般和过滤器一起使用,不指定版本默认显示一个版本
#(1)扫描时指定列族
scan 'member',{COLUMN=>'info'}
#(2)扫描时指定列族,并限定显示最新的5个版本 要在创建表的时候设置版本,如果只有一个版本就没有历史数据了
scan 'member',{COLUMN=>'info',VERSIONS=>5}
#(3)设置开启Row模式,开启Row模式会把那些已经删除标记但未删除的数据也显示出来
scan 'member',{COLUMN=>'info',RAW => true}
#(4)列的过滤
# 查询member表中列族为info和address的信息
scan 'member',{COLUMNS=>{'info','address'}}
# 查询member表中列键为info:name和address:city
scan 'member',{COLUMNS=>{'info:name','address:city'}}
# 查询member表中列族为info和address且列名含有a字符的信息
scan 'member',{COLUMNS=>{'info','data'},FILTER=>"(QualifierFilter(=,'substring:a'))"}
# 查询member表中列族为info,rk范围是[rk0001,rk0003)的数据
scan 'member',{COLUMNS=>'info',STARTROW=>'00001',ENDROW=>'00003'}
# 查询member表中RowKey中以rk字符开头
scan 'member',{FILTER=>"PrefixFilter('0')"}
# 查询member表中指定时间范围的数据
scan 'member',{TIMERANGE=>{12341234,43214321}}

删除数据,delete

删除一次是删除标记,get能获得上一个版本的数据,如果只有一个版本,就不能获得,但是其实是添加删除标记并没有真正删除,用scan可以看见其为type为delete

#删除id为guojing的值的'info:age'字段
delete 'member','guojing','info:age'
#删除整行
delete 'member','guojing'

清空整张表

truncate 'member'

Region操作

1)移动region

语法:move ‘encodeRegionName’,‘ServerName’

encodeRegionName指的是regionName后面的编码,ServerName指的是master-status的Region Servers列表

# 将表'member'移动到节点node2上
move '2d47b41ebf2c0be89e5b7d5f7e97bf3a','node2,16020,1628232102271'

寻找encodeRegionName的过程,进入hbase的web页面(端口号默认为16010),找到相应的ServerName

点击进入后即可看到相应的region信息,编码值表名后面的一长串

点击相应的表进入复制相应的encodeRegionName

进入hbase的web页面(端口号默认为16010),找到相应的ServerName

2)开启关闭region

语法:balance_switch true|false

HBase是一种支持自动负载均衡的分布式KV数据库,在开启balance的开关(balance_switch)后,HBase的HMaster进程会自动根据指定策略挑选出一些Region,并将这些Region分配给负载比较低的RegionServer上。

(当有新的节点进入hbase,为了负载均衡一种方式是手动将一部分region移动到新的节点,另一种方案是开启自动均衡策略,当region数据增多后,分裂时进入新的节点)

balance_switch true

3)手动split

语法:split ‘regionName’,‘splitKey’

split '2d47b41ebf2c0be89e5b7d5f7e97bf3a','001'

4)手动触发major compaction

HBase是基于一种LSM-Tree(Log-Structured Merge Tree)存储模型设计的,写入路径上是先写入WAL(Write-Ahead-Log)即预写日志,再写入memstore缓存,满足一定条件后执行flush操作将缓存数据刷写到磁盘,生成一个HFile数据文件。随着数据不断写入,磁盘HFile文件就会越来越多,文件太多会影响HBase查询性能,主要体现在查询数据的io次数增加。为了优化查询性能,HBase会合并小的HFile以减少文件数量,这种合并HFile的操作称为Compaction。

Minor Compaction:指选取一些小的、相邻的HFile将他们合并成一个更大的HFile。默认情况下,minor compaction会删除选取HFile中的TTL过期数据。

Major Compaction:指将一个Store中所有的HFile合并成一个HFile,这个过程会清理三类没有意义的数据:被删除的数据(打了Delete标记的数据)、TTL过期数据、版本号超过设定版本号的数据。

#Compact all regions in a table:压缩表中所有region
major_compact 't1'
#Compact an entire region:压缩一个region
major_compact 'r1'
#Compact a single column family within a region:压缩region中的一个列族
major_compact 'r1', 'c1'
#Compact a single column family within a table:压缩表中的一个列族
major_compact 't1', 'c1'
```cmd
#Compact all regions in a table:压缩表中所有region
major_compact 't1'
#Compact an entire region:压缩一个region
major_compact 'r1'
#Compact a single column family within a region:压缩region中的一个列族
major_compact 'r1', 'c1'
#Compact a single column family within a table:压缩表中的一个列族
major_compact 't1', 'c1'

5 HBase命令行接口相关推荐

  1. JAVA_基础部分_综合篇

    JVM (1) 基本概念: JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收,堆 和 一个存储方法域.JVM 是运行在操作系统之上的,它与硬件没有直接的 ...

  2. HBase体系架构说明

    HBase体系架构说明! client:两种--Hbase shell 命令行接口 JavaAPI client访问Region不能直接访问,首先client需要先连接到zookeeper,zooke ...

  3. 一、Hbase介绍、数据模型、体系结构

    文章目录 HBase介绍 HBase数据模型 逻辑视图 逻辑视图 HBase体系结构 HBase系统特性 HBase的优点 HBase的缺点 HBase介绍 HBase数据模型 逻辑视图来看,HBas ...

  4. 大数据培训之核心知识点Hbase、Hive、Spark和MapReduce的概念理解、特点及机制等

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  5. 《Hbase原理与实践》读书笔记——1.HBase概述

    1.1 HBase前世今生 Google当年风靡一时的"三篇论文":GFS -> HDFS , Mapreduce -> hadoop mapreduce , bigT ...

  6. Hbase原理与实践-1

    Hbase数据模型 从逻辑视图来看,Hbase的数据是用表形式进行组织的,而且和关系型数据库中的表一样,由列和行构成,从物理视图来看,hbase中的数据是一个Map,由键值(k,v)组成,不过与普通M ...

  7. 2021年大数据HBase(十七):❤️HBase的360度全面调优❤️

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录

  8. 2021年大数据HBase(十六):HBase的协处理器(Coprocessor)

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的协处理器(Coprocessor) 一.起源 二 ...

  9. 2021年大数据HBase(十五):HBase的Bulk Load批量加载操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的Bulk Load批量加载操作 一.Bulk L ...

最新文章

  1. 使用Screen使SSH关闭后Meteor服务继续运行
  2. Fabric--启动网络手动
  3. 腾讯“死守”版权,网易云“再强”社区,各筑“孤峰”对战在线音乐下半场
  4. python语言format用法_python基础_格式化输出(%用法和format用法)
  5. rxjs pipe和map组合的一个实际例子的单步调试
  6. linux 流量 脚本,linux 检测网络出入流量 当达到一定量时 自动执行另一个脚本。...
  7. 使用Azure Pipelines来实现Teams App的CI
  8. Citrix、Microsoft、VMware虚拟桌面之网页接口登录对比
  9. MSP430杂谈--delay_cycles的精准延时
  10. Num37 spring 事务 ssh整合
  11. 【渝粤教育】10763k2_客户服务管理_21秋考试
  12. 成功销售的六个关键步骤
  13. Struts2 Error filterStart异常的解决方法总结
  14. mysql 数据库基础教程(一)
  15. 省市县乡四级联动java代码,jQuery省市区街道四级联动代码
  16. 如何让房间每一个角落都充满 Wi-Fi?
  17. Zabbix企业微信告警最新版
  18. 顺序表的具体使用方法.数据解构(二)
  19. HTML基础-02-表格
  20. Forbidden.RAM : You are not authorized to operate this resource, or this API

热门文章

  1. C语言实现面向对象示例
  2. 重新认识二级指针(Pointers to Pointers)
  3. python深度优先算法 八皇后_八皇后问题——DFS(深度优先搜索)
  4. 用python做逻辑回归梯度上升_机器学习实例---4.1、Logistic回归基础篇之梯度上升算法...
  5. debug Tensorflow: ‘_UserObject‘ object has no attribute ‘add_slot‘
  6. 【Python】25个好用到爆的一行Python代码,建议收藏
  7. 【机器学习】如何通俗易懂地阐述机器学习?
  8. 【Python】Python字典的高级用法-统计计数
  9. 90题细品吴恩达《机器学习》,感受被刷题支配的恐惧
  10. 统计学习方法第二十章作业:潜在狄利克雷分配 LDA 吉布斯抽样法算法 代码实现