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交互)。

posted @ 2013-06-17 14:47  D调的晨星  阅读(466)  评论(0编辑  收藏  举报