一、应用场景及特点
1. HBase能做什么
海量数据存储(百亿*百万)
准实时查询(百毫秒查询)-->1秒内完成查询
2. 实际业务场景中的应用
交通:长江航道中船舶的GPS信息;路口摄像头违章拍照
金融:存取款,借还款
电商:淘宝-》订单,物流,浏览记录
移动端:通话记录等等
3.特点
海量存储:(百亿*百万)传统数据(单表500w,30列)
面向列:动态增加列;存储和权限控制面向列--》只需要少数几个字段的话,大大减少读取的数据量
多版本:每一列的数据存储有多个Version
稀疏性:为空的列不占用存储空间,表可以很稀疏
扩展性:线性扩展,随着数据量增多可以通过节点扩展进行支撑
高性能:
①底层LSM数据结构和Rowkey有序排列等架构上的独特设计,使得HBase具有非常高的写入能力。
②region切分、主键索引和缓存机制使得Hbase在海量数据下具备一定的随机读取性能,改性能针对Rowkey的查询能够到达毫秒级别
高可靠性:
4.优势
不同点 |
传统数据库 |
Hbase |
海量存储 |
500w*30时健康 |
百亿*百万 |
安全 |
不自带备份 |
数据存储在hdfs上,备份机制健全 |
准实时查询 |
数据达到一定数量开始缓慢,很大的话基本无法支撑 |
通过zookeeper协调查找数据,访问速度快 |
存储方式 |
行存储 |
列存储 动态增加列 存储和权限控制面向列 只需要少数几个字段的话,大大减少读取的数据量 |
数据较大时候的切分 |
人工第三方插件 |
自动(Region),也支持手动指定Region |
高并发读写 |
支持 |
不支持 |
5.劣势
只支持rowkey匹配查询,不支持条件查询等复杂查询
二、概念以及在Hadoop生态中的定义
1. HBase简介
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。
不同点 |
Google Bigtable |
HBASE |
文件存储系统 |
GFS |
Hadoop HDFS |
协同服务 |
Chubby |
Zookeeper |
相同点 |
都采用Hadoop MapReduce来处海量数据 |
2. 选择合适的版本
官方版本:http://archive.apache.org/dist/hbase/
CDH版本:http://archive.cloudera.com/cdh5/
三、Hbase架构服务体系与设计模型
1. 服务体系:服务包含哪些进程,进程与进程之间的关系,以及hbase在生态中的关系)
RegionServer向Master汇报:
①健康状态②管理哪些Region(表大的时候进行分区,一个分区就是一个Region)
注意:Zookeeper也知道RegionServer的以上信息
2. 设计模型:表结构模型 和 表数据模型
表结构模型
建表时候定列簇,不用定列
数据模型
- 一张表的列簇不会超过5个
- 每个列簇的列数没有限制
- 列只有插入数据后存在
- 列在列簇中是有序的
四、安装部署
参照《HBase安装部署》
1. 先决条件
- JDK1.7 +
- Hadoop-2.5.0 +
- Zookeeper-3.4.5 +
五、HBase shell使用
参照《HBase远程连接+常用命令》