HBase(2.1)-HBase介绍

1. HBase介绍
1.1 HBase简介
Hbase是一个非关系型的、持久的、分布式的、强一致性的存储结构、面向列的开源数据库,是一个适合于非结构化数据存储的数据库。
Hbase是Hadoop生态系统的一部分,Hbase数据最终是存储到HDFS文件系统当中;
Hbase是基于列存储的数据库,具有负载均衡和故障恢复功能,同时可以自动扩展,具有高效的读写功能。

(1)对于定义当中的几个名词的解释:
非关系型的:存储的数据格式是非结构化的数据
持久的:数据是存放到磁盘(Hbase是存储在基于HDFS文件系统的文件里面),而不是存于内存分布式的:主要是关系型数据库做对比,不是仅有一个服务器,数据存储的方式是分布式的,数据是分布在多台服务器;
强一致性:
一致性查到的概念如下:保证数据库客户端操作的正确性,数据库必须保持每一步操作都是从一个一致的状态到下一个一致的状态。
一致性又分为很多级别,强一致性的概念是数据的变化是原子的,一经改变立即生效。
我的理解是放到高并发的场景,数据的状态的固定的,根据高并发的采取的措施的不同有不同的效果,而出现了不同级别的一致性特征。
列式存储:
列式存储是以列为单位聚合数据,然后将列值顺序地存入磁盘;与此相对应的是行式存储,行式存储我们脑海当中有一定的印象,列式存储可以形象的理解为矩阵转置。
列式存储自带的优势: 1.方便压缩 2.减少I/O
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
数据类型单一:HBase中的数据都是字符串,没有类型。

1.2 HBase相关名词解释
Hbase位于结构化存储层,Hadoop HDFS为hbase提供了高可靠性的底层存储支持,hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。
1)行键(RowKey)
– 行键是字节数组, 任何字符串都可以作为行键(”主键”);
– 表中的行根据行键进行排序,数据按照Row key的字节序(byte order)排序存储;
– 所有对表的访问都要通过行键 (单个RowKey访问,或RowKey范围访问,或全表扫描) (二级索引)
2)列族(ColumnFamily)
– CF必须在表定义时给出
– 每个CF可以有一个或多个列成员(ColumnQualifier),列成员不需要在表定义时给出,新的列族成员可以随后按需、动态加入
– 数据按CF分开存储,HBase所谓的列式存储就是根据CF分开存储(每个CF对应一个Store),这种设计非常适合于数据分析的情形
3)时间戳(TimeStamp)
– 每个Cell可能又多个版本,它们之间用时间戳区分
4)单元格(Cell)
– Cell 由行键,列族:限定符,时间戳唯一决定,数据全部以字节码形式存储
5)区域(Region)
– HBase自动把表水平(按Row)划分成多个区域(region),每个region会保存一个表里面某段连续的数据;
– 每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region;
– 当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Region 上。
– HRegion是HBase中分布式存储和负载均衡的最小单元(默认256M)。最小单元表示不同的HRegion可以分布在不同的HRegionServer上。但一个HRegion不会拆分到多个server上。

1.3 HBase在Hadoop生态圈中的作用
Hbase在Hadoop生态系统当中结构图如下:
HBase(2.1)-HBase介绍_第1张图片

1) HDFS为Hbase 提供了文件存储支持,Hbase最终的数据是存储在HDFS文件系统当中;
2) HBase是Hadoop 数据库,存储了海量数据;
3) MapReduce 提供分析、处理数据的能力;
4) Zookeeper 提供了对稳定的服务和failover机制(对Hbase来说主要是为Master服务器管理Region)
5) Sqoop可以将关系型数据库导入到Hbase里面
6) Hbaes底层是用Java语言实现,Pig和Hive可以提供其他语言的支持,是操作数据更加的方便。

你可能感兴趣的:(HBase)