HBase与关系数据库
HBase是基于hadoop的非关系分布式数据库,其存储的是按字典序排序的keyvalue块,与关系数据库相比,HBase具有以下特征:
1.分布式系统,集群规模可平行扩展。
2.解散事务,保证单行写的事务性。
3.日志写系统,不必做写时查找,写入效率较高。
4.表自动分区,提高访问的并行程度。
5.表内数据成kv形式,按字典序自动排序。
6.简单API,仅提供查找或扫描工作。
7.多版本kv,强一致性,增加延迟。
综上所述,hbase的设计目的是为了廉价的存储和实时访问海量半结构化数据。
1.实时写入大量数据(日志写功能,多版本kv,minercompact,majorcompact,放弃数据库事务,保证单行操作的互斥)。
2.在线存储大量数据(基于hdfs,集群可平行扩展,表自动分区,基于分区的自动负载平衡)。
3.实时读取大量数据(按字典序排序kv,且提供查找及扫描API,布隆过滤器)。
针对在线业务可能出现的若干问题
1.并发度问题(但region及regionserver的并发极限)。
2.响应时间过长或超时(网络,IO,随机读命中低)。
3.region压缩及分裂(compact及split)。
4.负载平衡造成网络拥堵(region迁移)。
5.zookeeper问题(网络不稳定造成region下线,zookeeper节点挂掉)。
6.full GC引起的若干问题。
使用HBase的几点意见:
1.热点数据尽量分区,但不允许自动split(增加数据访问的并行性)。
2.根据业务类型配置集群的属性(多用户数据展现型,实时数据分析型,挖掘或机器学习中间存储系统)。
3.region分组(业务分类,隔离)。
4.充分coprocessor功能,但不要给自己挖坑(丰富hbase功能,注意风险)。
5.对源码需足够了解(读写,rpc过程,服务器与hdfs交互)。