hbase是apache旗下一个高可靠性、高性能、面向列、可伸缩的分布式数据库。
利用hbase技术可以在廉价的pc服务器上搭建大规模的存储化集群,使用hbase
可以对数数十亿级别的大数据进行实时性的高性能读写,在满足高性能的同时
还保证了数据存取的原子性。
查询的操作速度将会受到以下两个因素的影响:
1.表会被并发地进行插入,编辑以及删除
2.查询语句通常都不是简单地对一个表的查询,而有可能是多个表关联后的复杂查询,甚至有可能有group by或者order by操作。查询语句通常都不是简单地对一个表的查询,而有可能是多个表关联后的复杂查询,甚至有可能有group by或者order by操作。
CAP理论:
- Consistency(一致性):数据一致更新,所有数据变动都是同步的。
- Availability(可用性):良好的响应性能。
- Partition tolerance(分区容错性):可靠性。
关系型数据库&非关系型数据库
一、数据的储存方式| 存储位置 | 优点 | 缺点 |
|---|---|---|
| 内存 | 速度快 | 不能永久保存,数据是临时状态。 |
| 文件 | 数据可以永久保存 | 操作数据不方便,查询某个数据。 |
| 数据库 | 数据可以永久保存查询速度快对数据的管理方便 | 占用资源,需要购买。 |
数据库的特点:
- 持久化存储数据的,其实数据库就是一个文件系统
- 方便存储和管理数据
- 使用了统一的方式操作数据库 – SQL
所有的关系型数据库都可以使用通用的 SQL 语句进行管理 DBMS Database Management System。
常见的数据库:
MySQL,Oracle,DB2, SQL Server, SQLite
优势:
- 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
非关系型数据库的优点:
1、无需经过sql层的解析,读写性能很高;
2、基于键值对,数据没有耦合性,容易扩展;
3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,
非关系型数据库的缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理,附加功能bi和报表等支持也不好;
hbase采用key-value的形式存储数据,最基本的存储单位是列。
存储结构框架
在RDBMS中没有值的列必须存储NULL值。但是在Hbase中,没有值的列可以省略,空值不占用任何存储空间。
集群结构图:一般Hbase集群有一个HMaster服务器和几个HRegionServer服务器。HMaster服务器负责维护表的结构信息,HRegionServer服务器负责存储数据。客户端通过直连HRegionServer获取数据,所以当HMaster宕机后依然可以查询数,只是不能新建表了。
Store由两部分构成,一部分是MemStore,一部分是StoreFile。MemStore是内存缓冲区,StoreFile是HDFS上的文件。通常当MemStore的大小达到128或者占用内存达到总内存的40%,时会触发flush操作。
当单个StoreFile的大小超过10G(hbase.hRegion.max.filesize)后,会触发分裂(Split)操作,把当前Region分裂成2个Region。
如果数量达到32(hase.regionserver.max.logs)的时候,就会触发强制flush操作。
HMaster还负责维护元数据表(.meta.)。.meta.记录了每表的Region
hbase组成:
Hbase是由Client、Zookeeper、HMaster、HRegionServer和HDFS等几个组件组成,它们各自的功能如下:
Client:包含了访问Hbase的接口,还有维护缓存加速Hbase的访问。
Zookeeper:实现HMaster的高可用;监控HRegionServer的状态;存储.meta.的地址。
HMaster:维护.meta.;为HRegionServer分配Region;维护集群的负载均衡。
HRegionServer:处理客户端的读写请求;管理HMaster分配的Region。
HDSF:为Hbase提供最终的底层数据存储服务。



