一、核心思想
1.1 前提
-
MapReduce编程框架
-
GFS文件系统
-
BigTable存储系统
1.2 核心
-
BigTable(Google)
-
Apache及Hadoop开源社区的支撑
-
多家互联网公司的应用实践
目前HBase已成功应用与互联网服务领域和传统行业的众多在线式数据分析处理系统中,可随机处理读写的系统
1.3 技术范围
NoSQL
1.4 学习目的
使用HBase解决海量数据问题
注:RDBMS(Relational Database Management System)关系型数据库管理系统
1.5 特点
-
从RDBMS的角度,HBase并不是一个列式存储的数据库,但是利用了磁盘上的列式存储格式
-
相对于RDBMS适合实时存取数据,HBase适合键值对的数据存取/有序数据存取
1.6 自动分区
HBase中扩展和负载均衡的基本单元为region,region的本质上是以行键排序的连续存储区间。若region太大,系统会把它们动态拆分,相反,就会把多个region合并以减少存储文件数量。
每个region只能有一台region服务器(region server)加载,而一台region server可以同时加载多个region(一台机子一个region server)
每台服务器能加载的region数量和每个region的最大存储大小取决于单台服务器的有效处理能力。每台服务器的最佳加载数量为10-1000,但每个region的最佳大小为1GB-2GB
region的拆分和服务相当于其他系统提供的自动分区。当一个服务器出现故障后,该服务器上的region可快速恢复,并获得细粒度的负载均衡,因为当服务于某个region的服务器当前负载过大、发生错误或者被停止使用导致不可用时,系统会将改region移到其他服务器上。region的拆分可以瞬间完成,因为拆分后的region读取的仍为原存储文件,直到合并把存储文件异步地写成独立文件
注:HBase系统没有提供查询数据的特定域语言,数据存储不是以声明的方式完成的,是通过客户端API以纯粹的命令完成的
1.7 总结
HBase是一个分布式的、持久、强一致性的存储系统,具有近似最优的写功能和出色的读功能,充分利用磁盘空间,支持特定列族切换可选压缩算法,只考虑单一索引,提供过滤器功能,减少网络传输的数据量
系统的可扩展性体现在系统自动伸缩的过程。
行原子性和“读-修改-写”操作覆盖大部分的使用场景,消除死锁、等待问题