美文网首页
Hbase官方文档学习

Hbase官方文档学习

作者: 一只当归 | 来源:发表于2021-02-23 15:12 被阅读0次

HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。

HBase的特点

  1. 大:一个表可以有上亿行,上百万列。
  2. 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
  3. 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  4. 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
  5. 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
  6. 数据类型单一:HBase中的数据都是字符串,没有类型。
    2.1. 掌握HBase shell命令使用(创建一个学生信息表:rowkey要求是学号,一个列簇,包含姓名、性别、年龄、住址)

1.常用命令

1.1.hbase shell

进入hbase shell界面。


image.png

1.2.list

查看已经存在的表。


image.png

1.3.status

查询服务器状态。


image.png

1.4.version

查询hbase版本。


image.png

表操作

2.1.创建表

在shell环境中使用disable命令可以把表设为离线,使用alter命令可以进行必要的修改,而enable命令则可以把表设置为在线。
建表过程由于不熟悉hbase shell建表格式,出现了很多错误,后面在一篇博客上看到了解释后才恍然大悟。


image.png

例1:创建一个简单表,只包含一个‘data’列’。表和列族属性默认:
#create ‘test’ ,‘data’


image.png
例2:创建一个学生信息表:rowkey要求是学号,一个列簇,包含姓名、性别、年龄、住址:
image.png
例3:创建多个列簇:,包含姓名、性别、年龄、住址。表和列族属性默认:

#create 'student',{NAME=>'name'},{NAME=>'sex'},{NAME=>'age'},{NAME=>'adress'}


image.png

2.2.删除表

删除表需要先将表置为离线,然后再删除。
例:删除test表
#disable ‘test’
#drop ‘test’


image.png
image.png

2.3.查看表结构

# 语法:describe <table>
例:查看student表的结构
#describe ‘student’


image.png

2.4.修改表结构

注意:修改表结构必须先将标置为离线
# 语法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}
例:将name的版本设为2
#disable ‘student’
#alter ‘student’,{NAME=>’name’,VERSIONS=’2’}
#enable ‘student’


image.png

由于以下需要,所以又把name的版本改了回去。

3.权限管理

3.1.分配权限

# 语法 : grant <user> <permissions> <table> <column family> <column qualifier> 参数后面用逗号分隔
# 权限用五个字母表示: "RWXCA". READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
例:给用户‘root’分配对表‘student’有读写的权限:
#grant ‘root’,’RW’,’student’

3.2.查看权限

image.png

3.3.收回权限

image.png

4.增删改查

4.1.插入记录
# 语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
#例:插入数据到student1表中,rowkey要求是学号,包含姓名、性别、年龄、住址


image.png

这里我插入了四个数据。

4.2.查询记录

① 查询某行记录
# 语法:get <table>,<rowkey>,[<family:column>,....]
例1:查询表student1中学号为201601的记录
# get 'student1','201601'


image.png

例2:查询表student1中学号为201601中的f1下的name
# get 'student1','201601',‘f1:name’


image.png
②扫描表
# 语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}
#LIMIT控制数据个数
例:扫描表student1前3条数据
#scan ‘student’,{LIMIT=>3}
image.png

③查询表中的数据行数
# 语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
# INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度
例:查询表student1中的行数,每100条显示一次,缓存区为500
#count ‘student1’,{INTERVAL=>100,CACHE=>500}


image.png
4.3.修改记录
修改记录其实就是插入覆盖。
# 语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
例:修改表student中学号为201601的名字
#put 'student1','201601','f1:name','jok'
image.png

5.掌握HBase的预分区功能,能够采用预分区设计表

5.1.什么是预分区

HBase表在刚刚被创建时,只有1个分区(region),当一个region过大(达到hbase.hregion.max.filesize属性中定义的阈值,默认10GB)时,表将会进行split,分裂为2个分区。表在进行split的时候,会耗费大量的资源,频繁的分区对HBase的性能有巨大的影响,所以HBase提供了预分区功能,即用户可以在创建表的时候对表按照一定的规则分区。

5.2.预分区设计

①通过手动分区方法
# 语法:create <table>, {NAME => <family>},SPLITS => [,,,,]
示例:
#create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
#create 't1', {NAME =>'f1', TTL => 180}, SPLITS => ['10', '20', '30', '40']
#create 't1', {NAME =>'f1', TTL => 180}, {NAME => 'f2', TTL => 240}, SPLITS => ['10', '20', '30', '40']
注意:SPLITS里面的值代表分区位置,上面的10,20,30,40表示分区位置在这里,所以总共有五个分区。
例:手动分区创建一个有五个分区的表t1
#create 't1', 'f1', SPLITS => ['10', '20', '30', '40']


image.png

Web界面查看表结构,http://master:60010(hbase端口号60010)


image.png
②通过文件分区方法
# 语法:create <table>, {NAME => <family>},SPLITS => filepath
示例:
#create 't1', 'f1', SPLITS_FILE => '/tmp/splits.txt'
#create 't1', {NAME =>'f1', TTL => 180}, SPLITS_FILE => '/tmp/splits.txt'
#create 't1', {NAME =>'f1', TTL => 180}, {NAME => 'f2', TTL => 240}, SPLITS_FILE => '/tmp/splits.txt'
例:通过文件splits.txt内容建立分区t2
# create 't2', 'f1', SPLITS_FILE => '/tmp/splits.txt'
文件内容:
image.png

建立分区表:


image.png
Web界面查看分区:
image.png

相关文章

  • Hbase官方文档学习

    HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用H...

  • HBase 1.2.4 安装配置

    官方网站:http://hbase.apache.org/ 文档:http://hbase.apache.org/...

  • HBase数据模型的概念

    本文所述版本为HBase2.X 从HBase官方文档[https://hbase.apache.org/2.2/b...

  • HBase分布式部署实践

    一、Hbase的分布式部署 Hbase实践官方文档CSDN-Hbase分布式部署 依赖环境 Hadoop,开启hd...

  • hbase 模型

    [官方文档]http://hbase.apache.org/book.html#regions.arch[模型论文...

  • Hbase columnFamily

    一张 HBase 表包含一个或多个列族。 HBase 的官方文档中关于 HBase 表的列族的个数有两处描述: A...

  • HBase 最新版本(1.0以上)测试案例

    最近写HBase,发现很多功能都不建议使用,依据官方的文档写了份关于增删改查的测试案例,供学习交流。 import...

  • Flume自定义AsynHBaseSink

    在进行项目学习的时候,有个需求是将日志数据经过flume收集,然后sink到HBase中。经过查看官方文档,发现f...

  • HBase 1.2.2完全分布式安装

    官方参考文档: http://hbase.apache.org/book.html 0x00 前提 1.Zook...

  • React Native学习笔记之Style和Size

    本人始终认为最好最权威的学习资料就应该是官方文档Style官方文档Size官方文档CSS参考文档 Style学习 ...

网友评论

      本文标题:Hbase官方文档学习

      本文链接:https://www.haomeiwen.com/subject/eudnxltx.html