1/5 HBase

一、了解HBase官方文档:https://hbase.apache.org/book.html

1/5 HBase

文章插图
1.1 HBase概述
HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于存储海量的结构化或者半结构化,非结构化的数据(底层是字节数组做存储的)
HBase是Hadoop的生态系统之一,是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力 。如果需要进行实时读写或者随机访问大规模的数据集的时候 , 会考虑使用HBase 。
HBase作为Google Bigtable的开源实现,Google Bigtable利用GFS作为其文件存储系统类似,则HBase利用Hadoop HDFS作为其文件存储系统;Google通过运行MapReduce来处理Bigtable中的海量数据,同样,HBase利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应 。在2010年5月,成为apache顶级项目

1/5 HBase

文章插图
1.2 HBase处理数据
虽然Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,但是它不适用于提供实时计算;
HBase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件系统上,由HDFS保证期高容错性;
但是再生产环境中,HBase是如何基于hadoop提供实时性呢?
HBase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块儿中;
但是HDFS并不知道的HBase用于存储什么,它只把存储文件认为是二进制文件,也就是说 , HBase的存储数据对于HDFS文件系统是透明的 。
1.3 HBase与HDFS
在下面的表格中 , 我们对HDFS与HBase进行比较:
HDFSHBaseHDFS适于存储大容量文件的分布式文件系统 。HBase是建立在HDFS之上的数据库 。HDFS不支持快速单独记录查找 。HBase提供在较大的表快速查找HDFS提供了高延迟批量处理;没有批处理概念 。HBase提供了数十亿条记录低延迟访问单个行记录(随机存?。?。HDFS提供的数据只能顺序访问 。HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找 。Hbase--->HashMap
二、HBase相关概念2.1 分布式数据库
1、画图理解分布式是什么样子(region)
2.2 列式存储
2、画图理解列式存储 拿与mysql(必须项:表+列)中的表做对比(必须项:表+列簇)
2.3 稀疏性
3、画图理解稀疏(rowkey)
HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳]
2.4 数据模型
HBase通过表格的模式存储数据,每个表格由列和行组成,其中 , 每个列又被划分为若干个列族(colnum family),请参考下面的图:

1/5 HBase

文章插图
? 表:HBase的数据同样是用表来组织的,表由行和列组成,列分为若干个列族 , 行和列的坐标交叉决定了一个单元格 。
??行:每个表由若干行组成,每个行有一个行键作为这一行的唯一标识 。访问表中的行只有三种方式:通过单个行键进行查询、通过一个行键的区间来访问、全表扫描 。
??列族:一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元 。
【1/5 HBase】??列修饰符(列限定符):列族里的数据通过列限定符(或列)来定位
??单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell) , 单元格中存储的数据没有数据类型,总被视为字节数组byte[]
??时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引
2.4.1 Hbase数据模型
HBase将数据存放在带有标签的表中 , 表由行和列组成,行和列交叉确定一个单元格,单元格有版本号,版本号自动分配,为数据插入该单元格时的时间戳 。单元格的内容没有数据类型,所有数据都被视为未解释的字节数组 。
??表格中每一行有一个行键(也是字节数组,任何形式的数据都可以表示成字符串,比如数据结构进行序列化之后),整个表根据行键的字节序来排序 , 所有对表的访问必须通过行键 。
??表中的列又划分为多个列族(column family),同一个列族的所有成员具有相同的前缀,具体的列由列修饰符标识,因此,列族和列修饰符合起来才可以表示某一列,比如:info:format、cotents:image

推荐阅读