Hbase Shell操作

  1. 进入HBase客户端命令行

[root@master hbase]# bin/hbase shell
hbase(main):001:0>help 查看帮助命令
hbase(main):001:0>help 'disable_all'

显示当前Hbase版本号

hbase(main):002:0> version

显示各主节点的状态

hbase(main):003:0> status

显示当前用户名

hbase(main):004:0> whoami

退出Shell操作

hbase(main):005:0>exit

命令名称

相关说明

create

创建表

put

插入或更新数据

scan

扫描或并返回表的所有数据

describe

查看表的结构

get

获取指定行中列的数据

count

统计表中数据的行数

delete

删除指定行或列的数据

deteleall

删除整个行或列的数据

truncate

清除表中数据

drop

删除表

  1. DDL

2.1创建表

创建表时指明表名和列族两个参数,例:创建表student含有一个列族info,创建表stu含有两个列族info1,info2

hbase(main):001:0> create 'student','info'
hbase(main):002:0> create 'stu','info1', 'info2'

创建表时指定列族的参数。例:创建表stu1含有一个列族info,保留最近的5个历史版本。

hbase(main):003:0>create 'stu1' {NAME=>'info',VERSIONS=>5}

2.2查看表名

查看当前所有表名

hbase(main):004:0>list

2.3描述表结构

通过describe命令查看选定列表的列族及其参数

hbase(main):005:0>describe'stu1'

2.4修改表结构

增加列族,若列族存在则修改其参数

hbase(main):006:alter'student', { NAME => 'info', VERSIONS => 3 }
hbase(main):007:alter'stu', { NAME => 'info1', VERSIONS => 3 }

删除一个列族,以及其中包含的数据

hbase(main):008: alter 'student','delete'=>'info'

清空表中所有数据

hbase(main):009: truncate 'student'

2.5删除表

删除表之前需要将表禁用

hbase(main):010:disable 'student'
hbase(main):011:drop 'student'

2.6快照操作

hbase表快照是在某一个时间点对指定表拷贝,快照可以对重要数据进行恢复,防止用户错误性的操作。

hbase(main):012:snapshot 'stu','stu_bak'

查看快照

hbase(main):013: list_snapshots

通过快照生成新表

hbase(main):014:clone_snapshot 'stu_bak', 'stu2'

通过快照恢复原表格,需要将原表格删除,将抛弃快照之后的所有变化。

hbase(main):015:disable 'stu'
hbase(main):016:drop 'stu'
hbase(main):017:retore_snapshot 'stu_bak'
hbase(main):018:delete_snapshot 'stu_bak'

问题:如何利用快照实现表改名?

2.7命名空间操作

  1. DML

3.1插入数据

Put命令可以实现单条数据的插入和修改。若数据不存在,则插入数据。插入数据命令参数依次是表名、行键值、列族、列、值和时间戳或版本号。若插入时未填写时间戳,系统将自定给与一个长整型的时间戳。

hbase(main):001:put 'stu','001','info1:name','Mike',1
hbase(main):002:put 'stu','002','info1:name','Bob'
hbase(main):003:scan'stu'

3.2修改数据或更新数据

若数据存在时,则是在已经存在的数据上修改数据。更新数据版本,默认旧版本数据不可见。

hbase(main):004:put 'stu','002','info1:name','Jane'
hbase(main):005:put 'stu','001','info1:name','May',2
hbase(main):005:scan'stu'
  1. 查看数据

按行键获取数据,get命令的必写参数为表名和行键值。

hbase(main):004:get'stu','001'
hbase(main):005:get'stu','001', 'info1:name'

也可以指定时间戳,数据版本数以及过滤器。

hbase(main):006:get 'stu','002',{COLUMN=>'info1:name',VERSIONS=>3}
hbase(main):007:get 'stu','002',{COLUMN=>'info1:name',VERSIONS=>3,TIMERANGE=[1,2]}

不指定行键,通过全表扫描查询数据

hbase(main):008:scan'stu'

3.3删除数据

删除单条数据,指定表名、行键值、列族和列。

hbase(main):001:list
hbase(main):002:scan'stu2'
hbase(main):003: delete 'stu2','001','info1:name'

删除某列族数据,指定表名、行键值、列族。

命令格式:alter ‘表名’, {NAME => ‘列族名’, METHOD => ‘delete’}

hbase(main):004:alter 'stu2',{NAME => 'info2',METHOD => 'delete'}

删除整个逻辑行信息,指定表名、行键值。

hbase(main):005:deleteall 'stu2','001'

清空表数据。

hbase(main):005:truncate 'stu2'
  1. 批量导入导出数据

4.1利用ImportTSV批量导入数据

该方法将存储在HDFS上的文本文件导入到Hbase上的指定表中,利用MapReduce实现并行化的数据插入。TXT文本当中应当有明确的列分隔符,比如利用“\t”(TAB)分隔的TSV文件,或逗号分隔的CSV格式。

  • 上传文本到HDFS上

    [root@master ~]#cat student.txt
    1,zhangsan,100
    2,lisi,90
    3,wangwu,80
    [root@master ~]#hdfsdfs -mkdir /opt
    [root@master ~]#hdfsdfs -put student.txt /opt
  • 在Hbase shell创建好表

hbase(main):001:create 'stu1','info'
  • 在Linux的命令行中通过调用Hbase指令调用ImportTsv类

-Dimporttsv.separator参数指定文件的分隔符

-Dimporttsv.columns参数指定文件中第一列为行键,第二列写入列族info下名为name的列,第三列写入列族info下名为scores的列

stu1为导入的表名

/opt为导入hdfs文件所在的目录,不需要指定文件名,导入时会遍历目录中的所有文件

[root@masterhbase]# bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv-Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:scoresstu1 /opt

如果运行时,出现以下错误,一直在尝试连接。可以在yarn-site.xml文件中加入以下信息。

<property>

<name>yarn.resourcemanager.address</name>

<value>slave2:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>slave2:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>slave2:8031</value>

</property>

Hbase支持将表或快照复制到hdfs,支持将数据复制到其他Hbase集群,以实现数据备份和恢复功能。

4.2利用Export导出文件

将数据从Hbase导出到hdfs,该命令导出的数据目的是备份,文件不能以文本方式查看。两个参数,一个为表名,另一个为hdfs文件存放路径。

注意:由于MapReduce的特性,该目录不能提前存在。

[root@master hbase]#bin/hbaseorg.apache.hadoop.hbase.mapreduce.Export stu1 /hbase

4.3利用Import恢复表格

导出的数据可以恢复到Hbase,其中表stu2需提前创建好。

hbase(main):002:create 'stu2','info'
 
[root@master hbase]#bin/hbaseorg.apache.hadoop.hbase.mapreduce.Import stu2 /hbase

4.4利用ExportSnapshot备份

将快照备份到hdfs,指定快照名,hdfs路径,导出的快照文件可以利用Import方法恢复到表中。

hbase(main):003:snapshot 'stu1','stu1_bak'
[root@master hbase]#bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot-snapshot sut1_bak -copy-to /hbase1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值