07 HBase操作

1.理解HBase表模型及四维坐标:行键、列族、列限定符和时间戳。

行键(rokey):rowkey是用来检索记录的主键。访问HBase Table中的行,只有三种方式:

1)通过单个row key访问

2)通过row key的range

3)全表扫描

rowkey 行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),最好是16。在 HBase内部,rowkey保存为字节数组。HBase 会对表中的数据按照 rowkey 排序 (字典顺序)存储时,数据按照 rowkey 的字典序(byte order)排序存储。设计 key 时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)

列族(Column Family)HBase 表中的每个列,都归属与某个列簇。列簇是表的Schema的一部分(而列不是),必须在使用表之前定义好,而且定义好了之后就不能更改。

列名都以列簇作为前缀。例如courses:history,courses:math都属于courses这个列簇。

访问控制、磁盘和内存的使用统计等都是在列簇层面进行的。列簇越多,在取一行数据时所要参与IO、搜寻的文件就越多,所以,如果没有必要,不要设置太多的列簇(最好就一个列簇)

列限定符(Column Qualifier):列限定符,可以理解为是具体的列名,例 courses:historycourses:math 都属于 courses 这个列族,它们的列限定符分别是 history 和 math。需要注意的是列限定符不是表 Schema 的一部分,你可以在插入数据的过程中动态创建列。

时间戳(TimeStamp):HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。

每个cell 都保存着同一份数据的多个版本,版本通过时间戳来索引。时间戳的类型是 64 位整型。时间戳可以由hbase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。 每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

为了避免数据存在过多版本造成的管理 (包括存贮和索引)负担,hbase提供了两种数据版本回收方式: 保存数据的最后 n 个版本 保存最近一段时间内的版本(设置数据的生命周期 TTL)。用户可以针对每个列簇进行设置。

2.启动HDFS,启动HBase,进入HBaseShell命令行。

启动HDFS、启动HBase:

 进入HBaseShell命令行:

3.列出HBase中所有的表信息list

4.创建表create

5.查看表详情desc

6.插入数据put

7.查看表数据scan,get

scan:

get:

 

8.多版本实验:修改列族版本数,插入多版本数据,查看多版本数据

1)创建查看

2)修改查看

3)插入数据

4)查看多个版本的数据

9.对比HBase列式表与MySQL的行式表

  • 在HBase中创建学生课程分数表student并查看表结构。create,describe,put
  • 在mysql中创建学生表student, 课程表 course, 分数表score并查看表结构。create,describe
  • 分别插入几行数据,几个版本。put/insert
  • 查看数据及版本。get,scan/select

 

message

score

name

age

sex

OS

BD

row1

…3624

xianming

…3447

19

   

85

90

row2

   

…6395

…7611

19

22

       

row3

       

…4968

femal

   

 

     message  score
  name age   sex  Big data  OS
 001  Peter 20  man 80 50
           

HBase:

1.创建一个学生表(create)。

 2.插入信息(put)。

 3.查看表结构(describe)。

 4.查看表(scan)。

 

MySQL: 

学生表(student):

 查看学生表(select):

 课程表(course):

 查看课程表(select):

 分数表(score):

 

 查看分数表(select):

posted @ 2021-11-08 22:59  boomboom_gua  阅读(288)  评论(0编辑  收藏  举报