文章目录
- 目录
- 1.HBase概述
- 1.1BigTable
- 1.2 HBase简介
- 1.3 HBase和传统的关系型数据库之间的区别
- 2.HBase访问接口
- 3.HBase数据模型
- 3.1 数据模型概述
- 3.2 数据模型相关概念
- 3.3 数据坐标
- 3.4 概念视图
- 3.5 物理视图
- 3.6 面向列的存储
- 4.HBase的实现原理
- 4.1 HBase功能组件
- 4.2 表和region
- 4.3 region的定位
- 5.HBase运行机制
- 5.1 HBase系统架构
- 5.2 region服务器工作原理
- 5.3 Store工作原理
- 5.4 HLog工作原理
- 6.HBase应用方案
- 6.1 HBase实际应用过程中的性能优化方案
- 6.2 HBase性能监测
- 6.3 在HBase上构建SQL引擎
- 6.4 构建HBase二级索引(列的直接索引)
- 7.HBase编程实践
- 7.1 HBase的安装和配置
- 7.2 HBase常用的Shell命令
- 7.3 HBase常用的JAVA API及应用
- 8.总结
目录
1.HBase概述
1.1BigTable
1.2 HBase简介
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表
1.3 HBase和传统的关系型数据库之间的区别
2.HBase访问接口
3.HBase数据模型
3.1 数据模型概述
- HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符(列名)和时间戳每个值是一个未经解释的字符串,没有数据类型
- 用户在表中存储数据,每一行都有一个可排序的行键和任意多的列
- 表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起
- 列族支持动态扩展,可以很轻松地添加一个列族或列,无需预先定义列的数量以及类型,所有列均以字符串形式存储,用户需要自行进行数据类型转换
- HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)
3.2 数据模型相关概念
3.3 数据坐标
3.4 概念视图
3.5 物理视图
从上面的概念师徒我们可以看到,有很多行的记录在某些列簇的列上面时没有数据的,如果直接按照概念视图进行存储,则会造成很大的空间上的浪费,所以物理视图中,将概念视图中按照列簇进行拆分成多个表格,然后对拆分后的表格进行存储。
3.6 面向列的存储
行式存储指的是将一条记录以行的方式进行存储;列式存储指的是将一条记录按照列的方式进行存储。
列式存储相比于行式存储的优势:
- 由于在实际的数据分析应用中,我们常常感兴趣的是某一列的数据的一个分布情况,所以按照列存储的话,很方便的将数据按照属性(列名)提取出来。如果按照行存储,则要遍历每一行,然后将数据进行拼接,效率低下。
- 每条记录的相同列的数据的取值,类型相近,利于数据的存储
- 可以动态的实现列的添加,而不像传统的关系型数据库,在确定表的结构后便无法进行修改。
4.HBase的实现原理
4.1 HBase功能组件
4.2 表和region
4.3 region的定位
元数据:描述数据的数据
5.HBase运行机制
5.1 HBase系统架构
5.2 region服务器工作原理
5.3 Store工作原理
5.4 HLog工作原理
6.HBase应用方案
6.1 HBase实际应用过程中的性能优化方案
默认的HBase行健时按照升序存储的,而实际应用中常常时查看最新的几条记录,所以实际过程中会将HBase的存储修改为降序存储。
6.2 HBase性能监测
- Master-status(自带)
- Ganglia
- OpenTSDB
- Ambari
6.3 在HBase上构建SQL引擎
6.4 构建HBase二级索引(列的直接索引)
7.HBase编程实践
参考网站
7.1 HBase的安装和配置
7.2 HBase常用的Shell命令
7.3 HBase常用的JAVA API及应用