一、了解HBase官方文档:https://hbase.apache.org/book.html
文章插图
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.2 HBase处理数据
虽然Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,但是它不适用于提供实时计算;1.3 HBase与HDFS
HBase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件系统上,由HDFS保证期高容错性;
但是再生产环境中,HBase是如何基于hadoop提供实时性呢?
HBase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块儿中;
但是HDFS并不知道的HBase用于存储什么,它只把存储文件认为是二进制文件,也就是说,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)2.4 数据模型
HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳]
HBase通过表格的模式存储数据,每个表格由列和行组成,其中,每个列又被划分为若干个列族(colnum family),请参考下面的图:
文章插图
? 表:HBase的数据同样是用表来组织的,表由行和列组成,列分为若干个列族,行和列的坐标交叉决定了一个单元格 。
??行:每个表由若干行组成,每个行有一个行键作为这一行的唯一标识 。访问表中的行只有三种方式:通过单个行键进行查询、通过一个行键的区间来访问、全表扫描 。
??列族:一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元 。
??列修饰符(列限定符):列族里的数据通过列限定符(或列)来定位
??单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]经验总结扩展阅读