大数据学习 -------- HBASE的基本概念

逻辑概念

大数据学习 -------- HBASE的基本概念_第1张图片

如下图所示,是一个HBase的典型表,HBase中通过多个条件(经常称之为坐标)来定位表中的数据:

大数据学习 -------- HBASE的基本概念_第2张图片
 

HBase表由多行组成。

大数据学习 -------- HBASE的基本概念_第3张图片

一行在HBase由行键和一个或多个列的值组成。如下图所示:

大数据学习 -------- HBASE的基本概念_第4张图片

行按字母顺序排序的行键存储,行健类似关系型数据库中的ID列。如下图所示:

大数据学习 -------- HBASE的基本概念_第5张图片

Row Key

与nosql数据库们一样,row key是用来检索记录的主键。访问HBASE table中的行,只有三种方式:

1.通过单个row key访问

2.通过row key的range(正则)

3.全表扫描

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

 

保存为“字节数组”的意思:没有int类型、char类型等数据类型之分,都是ascii

字典序的意思:2 10 排序时,10排在2的前面。 因为数据都保存为 字节数组 ,因此也就没有  数据类型了(如果有数据类型的话,2应排在10之前)

大数据学习 -------- HBASE的基本概念_第6张图片

列是表中的最基本元素,HBase的列包含一个列族和一个列限定符,列属于一个列族,列族属于一个行。列中的内容不需要指定类型,这也是与关系型数据不同的地方,也是HBase被称之为无类型的数据库的原因。HBase的列与关系型数据库不同,在于其含有版本的概念,一个列的数据可以有多个历史版本,体现形式就是时间戳。

大数据学习 -------- HBASE的基本概念_第7张图片

列族

大数据学习 -------- HBASE的基本概念_第8张图片

在关系型数据库中没有列族的概念,在HBase中,列族是一行中一个或多个列的集合,就是一行数据的一部分。列族需要在表创建时就定义好,并且不能修改的太频繁,数量也不能太多,在以前的HBase实现中有少量已知的缺陷,导致列族的数量最多只能使用几十个。列族中的列的数量是没有限制的。

列限定符

大数据学习 -------- HBASE的基本概念_第9张图片

如图所示,列族中可以包含多个列,一个表中的某个列的定位方式就成为了meta:size 这种方式。我们就称之为列限定符,说白了,列限定符即指一个列族中的某个列。

单元格

大数据学习 -------- HBASE的基本概念_第10张图片

一个单元格是行、列族和列限定符的结合,也就是说,通过这三个值(也称之为坐标)来唯一确定一个单元格。其中包含值和创建这个值的时间(即时间戳)。单元格中的值与关系型数据库不同的是,其如果没有值的话,就为空,什么也不写,也不占用底层物理存储。关系型数据中则需要存储null。

版本:version   用于标识更新的数据 ,也已作为数据的检索项

最小的存储单元cell单元格

在进行检索数据的时候,可以通过 以下方式进行单元格数据的唯一确定

cell单元格:rowkey+列簇+时间戳+value 找到数据内容

rowkey :1001 
	
			column famliy1:info
				
					name:zhangsan
					age:18
					sex:nan
					
			column famliy1:info2
				
					addr:beijng
					phone:137

时间戳

大数据学习 -------- HBASE的基本概念_第11张图片

时间戳就是写入某个单元格中的数据时候的具体时间(从1970年1月1日开始到当前系统时间的一个毫秒值),用来表示一个单元格中的数据的新旧。

 

 

物理概念

上述的逻辑概念最终还是要体现在物理机器上才有意义。那一个大“表”如何存储在机器中的呢?

1.将一个大表按“行”划分不同的部分,每一个部分叫一个Region也就是一个Region由若干条记录组成。而一个Region根据“列族”,又可以划分成不同部分,这每一部分叫store。

2.将每一个Region存放到hbase集群中的某台机器上,这个机器叫Region Server

 

3.每个Region最终还是存放到一个文件系统中,这个文件系统就是hdfs,这点跟mysql类似(mysql的表最终还是以文件的形式存在)。这个存在hdfs的文件叫做HFile

 

4.hbase既然是集群那么必然就有机器是管理者,这样的机器在hbase中叫HMaster,其他机器就是RegionServer

大数据学习 -------- HBASE的基本概念_第12张图片

那上图中各个角色的主机有什么作用呢?

hmaster:相当于hbase中老大

管理多个hregionserver

存储namespace (相当于mysql的database)、 所有table

它决定hregion的创建

决定hregion的split(正常变大)、和数据重新分配(split 、 故障转移)

hregionserver:hbase核心服务

1、负责处理来自于client的的i/o请求

2、管理自己的多个hregion

3、负责数据存取、hreion的拆分

zookeeper:   rowkey 001-003  , ip地址指向resionServer1

保证有且仅有一个active的hmaster(监控hmaster)

存储整个hbase的元数据(table名、列簇名、列名)

存储hregion的寻址的数据

作为hbase的访问入口,切换hmaster的主备, Hbase部分元数据也是保存在zookeeper中

1 client :访问hbase

2 mater: 管理类的工作,主要管理regionServer ,负责均衡,管理元数据(数据库的名字,表的名字)

3 Regonserver: 存放region,而region存放是真正的数据,并且regonserver可以相应的读写请求,还可以管理表中的数据

Hbase物理模型:

每个column family存储在HDFS上的一个单独文件中,空值不会被保存。
Key 和 Version number在每个 column family中均有一份;
HBase 为每个值维护了多级索引,即:

物理存储:
1、Table中所有行都按照row key的字典序排列;
2、Table在行的方向上分割为多个Region;
3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分为两个新的region,之后会有越来越多的region;
4、Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。

大数据学习 -------- HBASE的基本概念_第13张图片

Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上

大数据学习 -------- HBASE的基本概念_第14张图片

Hbase详细结构

大数据学习 -------- HBASE的基本概念_第15张图片

4.hbase shell常用命令

下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下:

名称 命令表达式
创建表 create '表名称', '列名称1','列名称2','列名称N'
添加记录  put '表名称', '行名称', '列名称:', '值'
查看记录 get '表名称', '行名称'
查看表中的记录总数 count  '表名称'
删除记录 delete  '表名' ,'行名称' , '列名称'
删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称'
查看所有记录 scan "表名称" 
查看某个表某个列中所有数据 scan "表名称" , ['列名称:']
更新记录 就是重写一遍进行覆盖

 

 

 

你可能感兴趣的:(文档,大数据,HBASE)