Hbase(Hadoop Database)是建立在Hadoop文件系统之上的分布式面向列的数据库,它的主要目的是存储非常大的表,百万行,百万列的那种。
特性
它具有如下特点(摘自官网):
- 线性扩展,水平扩展
- 严格的读写一致
- 自动的和可配置的表分片
- RegionServers之间自动的故障转移
- 客户端的API使用方便
- 实时查询的块缓存和Bloom过滤器
- 可扩展的基于jruby的shell
- 支持导出系统的度量信息到文件中,或者到Ganglia
- 支持XML,Protobuf和二进制的数据传输
使用场景
- 场景上不需要太复杂的事务,目标只是大数据与高并发
- 随机读的场景
- 现有的关系型数据库已经无法在硬件上满足数据疯狂增长的需要,mysql中单表数据超过千万时,数据的查询速度越来越慢。而Hbase一个表支持数百亿行,上百列。
- 基于大数量高并发操作考虑,为了满足每天上亿级别的访问,而hbase根据rowkey进行查询的速度相当快
在我们公司的业务场景:
- 存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。
- 存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息
- 存储业务附件:UDFS系统存储图像,视频,文档等附件信息
不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。
Hbase架构体系和设计模型
- Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
- HDFS是Hbase运行的底层文件系统
- RegionServer,理解为数据节点,存储数据的。
- Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移。
Hbase数据模型
列簇:
- 一张表列簇不会超过5个
- 每个列簇中的列数没有限制
- 列只有插入数据后存在
- 列在列簇中是有序的
Hbase与关系型数据库对比:
- Hbase特点:列动态增加,数据自动切分,高并发读写 缺点:不支持条件查询
- 关系型数据库:支持复杂查询,不支持高并发,数据切分比较麻烦,列要提前定义
最后
下节讲下Hbase的安装使用。