大数据之hbase_hbase的shell客户端基础操作

开启shell交互客户端

为了操作方便,建议将hbase配置到linux系统的环境变量中
配置好环境变量后,在任意位置,输入hbase shell 即可进入到shell客户端中
输入help指令,可查看shell客户端所有的操作指令列表
输入help “命令名” 可查看该命令所有的功能及用法

通用命令

status: 查看HBase的状态,例如,服务器的数量。
version: 提供正在使用HBase版本。
table_help: 表引用命令提供帮助。
whoami: 提供有关用户的信息。

namespace:操作名称空间的命令

hbase中没有数据库的概念 , 可以使用namespace来达到数据库分类别管理表的作用
alter_namespace 操作namespace的属性信息
create_namespace 创建名称空间
describe_namespace 查看名称空间的描述信息
drop_namespace 删除一个名称空间
list_namespace 查看系统中的名称空间
list_namespace_tables 列举出一个名称空间下所有的表

在创建名称空间时,可以给它赋予属性,属性中可以列出改名称空间的用途及创建人等信息
大数据之hbase_hbase的shell客户端基础操作

DDL(Data Definition Language):操作表的命令

list 列举出默认名称空间下所有的表
create 建表
alter 修改列族schema(表结构和属性) ,添加列,修改列
alter_async 这个不需要等所有region收到schema发生更改就返回
alter_status 可以查看alter进度,有几个region收到schema更改通知
describe/desc 查看表结构信息
disable 禁用表
disable_all 禁用多张表
is_disabled 查看是否是禁用
drop 删除表
drop_all 删除多张表
enable 启动一张表
enable_all 启动多张表
is_enabled 查看表是否启用
exists 查看表是否存在
get_table 获取表对象
list_regions 列出表所有region信息
locate_region 查看表的某行数据所在的region信息
show_filters 列举出系统可用的过滤器(用用条件筛选查询操作)

创建表时只需要创建表名和列族名即可,不需要创建属性,因为hbase的稀疏性,属性需要插入数据时再创建,创建列族时可以指定版本号VERSIONS和数据存留时间TTL
大数据之hbase_hbase的shell客户端基础操作

DML(Data Manipulation Language):操作表中数据的命令

append
count
delete
deleteall
get
get_counter
get_splits
incr
put 插入数据
scan
truncate
truncate_preserve

put “表名”,“指定行键”,“列族名”,“属性”,“值”
put数据后可以使用scan查看数据,数据在hbase中看到,但在hdfs中还无法看到,因为数据会暂时存在内存中,如果想在hdfs中看见可以刷新一下
flush “表名” 将hbase存在内存中的数据刷到hdfs中
可以在linux中输入:
hbase hfile -p -f “储存路径” 查看存储在hdfs中的数据
hdfs储存路径如下:
大数据之hbase_hbase的shell客户端基础操作

扩展内容:

1)在大多数数据存储类型中都不支持随机写和随机改数据,那么在hbase中是如何实现删除和改动数据的呢?
当我们执行删除操作时,例如删除某一个行键:
deleteall “表名” “行键名”
执行此操作后,flush刷新一下该表,hbase会在hdfs中生成一个新的文件,储存着该行键已被删除的墓碑标记,然后过一段时间后,系统会自动将原文件和新生成的墓碑标记进行整合,整合后会生成一个该行键被删除后的新文件(改数据与此同理)
2)预分region建表:
当我们用普通方式建表时,只会生成一个region,当后面有大量数据储存过来时,会导致只有一个regionserver在服务,这会导致插入热点问题.
为解决此问题,我们可以在创建表时,就多建几个region,region的分割方式是以行键进行分割的,例如我们建一个预分region表:create “doit:tb_user7”,“cf1”,SPLITS=>[“a4”,“a7”]
大数据之hbase_hbase的shell客户端基础操作
此时我们创建了两个分割点"a4",“a7” ,那么这个表就会被分成三个region
我们插入数据时设置行键后,因为设置的切分点是两位数的,所有系统就会去对比行键前两位比"a4","a7"大还是小,大的话就分到后面,小的就分到前面(按字典顺序进行比较),如果相同也分到后面,然后各个region文件就会均衡的分布到hdfs中,生成多个regionserver,从而避免了插入热点问题.