本文章来源于:https://github.com/Zeb-D/my-review ,请star 强力支持,你的支持,就是我的动力。
[TOC]
概述
HBase作为NoSQL的一员,在性能上不如memcached和redis,但是持久化存储方面比内存NoSQL强。作为文档型NoSQL在分布式存储上比mongo做sharding和MapReduce分析方便多。
HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储。
场景
HBase可以说是一个数据库,也可以说是一个存储。拥有双重属性的HBase天生就具备广阔的应用场景。在最近的一些版本中,引入了OffHeap降低gc影响,优化链路延迟,提供Replica等可以满足在线的需求。引入MOB,可以存储10M左右的对象,完全适应了对象存储。另外由于自身的并发能力、存储能力,可以说是具有最为竞争力的引擎
- 对象存储:我们知道不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中
- 时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求
- 推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上
- 时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在HBase之中
- CubeDB OLAP:Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求
- 消息/订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上
- Feeds流:典型的应用就是xx朋友圈类似的应用
- NewSQL:之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求
更多的场景需要不断挖掘
架构
逻辑存储模型
HBase以表的形式存储数据,表由行和列组成。列划分为若干个列族,如下图所示:
RowKey:Hbase使用Rowkey来唯一的区分某一行的数据。如图中"rk001"
列族:Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取。Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。如图中的“CF1”列族,下面包含两个列:"Name"和"Alias"。
时间戳:TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
Cell:HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。每个 cell 都保存着同一份 数据的多个版本。版本通过时间戳来索引。
物理存储模型
HBase的物理存储模型如下图:
在HBase中,数据以表的形式存储,表由很多行组成,每一行由Row key(行键)以及一个或多个的列值组成。
当表有很多很多的Row时,我们把这个表按某些规则(比如每500条)拆分成很多部分,那么拆分后的每一部分就是所谓的HRegion,这个HRegion作为一个整体被HMaster分配到某一个RegionServer中。
可以这样理解,把HMaster想象成一个老大,他把HRegion给分配到某一个服务器上,这样一来,一个表就被分成多个HRegion并可能分配到了不同的RegionServer上。
我们刚说HRegion是一个整体,意思是他不能再继续往下分割了,他必须在一个RegionServer上。
总体架构
HBase的总体结构图如下:
包括了HMaster、HRegionSever、HRegion、HLog、Store、MemStore、StoreFile、HFile等。
HBase底层依赖HDFS,通过DFS Cilent进行HDFS操作。HMaster负责把HRegion分配给HRegionServer,每一个HRegionServer可以包含多个HRegion,多个HRegion共享HLog,HLog用来做灾难恢复。
每一个HRegion由一个或多个Store组成,一个Store对应表的一个列族,每个Store中包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装),MemStore是在内存中的,保存了修改的数据,MemStore中的数据写到文件中就是StoreFile。
HMaster
HMaster的主要功能有:
- 把HRe

本文详细介绍了HBase的存储模型、架构及重要组件,包括逻辑存储模型中的RowKey、列族和时间戳,以及物理存储模型的HRegion、HLog、HFile等。文章还探讨了HBase的使用场景,如对象存储、时序数据、推荐画像等,并分析了HBase的灾难恢复机制和关键类。此外,提到了WPF中使用XmlDataProvider提供数据的情况。
最低0.47元/天 解锁文章
131

被折叠的 条评论
为什么被折叠?



