小伙伴们大家好~
HBase 简介
- HBase 是BigTable的开源 java 版本。数据文件存储在 HDFS,是一个分布式、可扩展、支持海量数据存储的NoSQL 的数据库
- 具有高可靠性、高性能、可扩展、列存储、实时读写等特点
- HBase 仅能通过主键(row key)和主键的 range 来检索数据,仅支持单行事务
- 主要用来存储结构化和半结构化的松散数据
- Hbase 查询数据功能很简单,不支持 join 等复杂操作,不支持复杂的事务(行级的事务),从技术上来说,HBase 更像是一个「数据存储」而不是「数据库」,因为 HBase 缺少 RDBMS 中的许多特性,例如带类型的列、二级索引以及高级查询语言等
- Hbase 中支持的数据类型:byte[]
- 与 Hadoop 一样,Hbase 目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加存储和处理能力,例如,把集群从 10 个节点扩展到 20 个节点,存储能力和处理能力都会加倍
- HBase 中的
表
一般有这样的特点
- 大:一个表可以有上十亿行,上百万列
- 面向列:面向列(族)的存储和权限控制,列(族)独立检索
- 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏
HBase 应用
- HBase 只要有海量数据存储,而且需要快速的写入以及快速的读取场景,就很适合 HBase
- 但要记住 NoSQL 的特点:对事务的支持性较弱的
- 可以用来存储爬虫的数据、点赞/转发、银行转账订单....
HBase 特点
-
强一致性读/写
-
HBase 不是“最终一致的”数据存储
-
它非常适合于诸如高速计数器聚合等任务
-
-
自动分块
- HBase 表通过 Region 分布在集群上,随着数据的增长,区域被自动拆分和重新分布
-
自动 RegionServer 故障转移
-
Hadoop/HDFS 集成
- HBase 支持 HDFS 开箱即用作为其分布式文件系统
-
MapReduce
- HBase 通过 MapReduce 支持大规模并行处理,将 HBase 用作源和接收器
-
Java Client API
- HBase 支持易于使用的 Java API 进行编程访问
-
Thrift/REST API
-
块缓存和布隆过滤器
- HBase 支持块 Cache 和 Bloom 过滤器进行大容量查询优化
-
运行管理
- HBase 为业务洞察和 JMX 度量提供内置网页
HBase 结构
- 以表形式存在
- 支持 HDFS 文件系统
- 使用行键(row key)
- 原生支持分布式存储、计算引擎
- 使用行、列族、列、和单元格
HBase 数据模型
- HBase 中是有表的概念的
- 一个表中可以包含多个列族(官方建议使用一个列族,避免 flush 产生大量小文件)
- 一个列族可以包含很多的列
- 每一个列对应的单元格(值、timestamp)
我的公众号:主要记录大数据+金融的学习笔记
欢迎关注: