Hbase 存储相关知识

南墨2年前技术文章463

1.Hbase的写流程

Client 写入-> 存入MemStore,一直到MemStore 满-> Flush 成一个StoreFile,直至增长到一定阈值-> 触发Compact 合并操作-> 多个StoreFile 合并成一个StoreFile,同时进行版本合并和数据删除-> 当StoreFiles Compact 后,逐步形成越来越大的StoreFile -> 单个StoreFile 大小超过一定阈值后(默认10G),触发Split 操作,把当前Region Split 成2 个Region,Region 会下线,新Split出的2个子Region 会被HMaster 分配到相应的HRegionServer 上,使得原先1 个Region的压力得以分流到2 个Region 上

由此过程可知,HBase 只是增加数据,没有更新和删除操作,用户的更新和删除都是逻辑层面的,在物理层面,更新只是追加操作,删除只是标记操作。

用户写操作只需要进入到内存即可立即返回,从而保证I/O 高性能。

2.Hbase 的存储结构

Hbase 中的每张表都通过行键(rowkey)按照一定的范围被分割成多个子表(HRegion),默认一个HRegion 超过256M 就要被分割成两个,由HRegionServer管理,管理哪些HRegion 由Hmaster 分配。HRegion 存取一个子表时,会创建一个HRegion 对象,然后对表的每个列族(Column Family)创建一个store 实例, 每个store 都会有0 个或多个StoreFile 与之对应,每个StoreFile 都会对应一个HFile,HFile 就是实际的存储文件,一个HRegion 还拥有一个MemStore 实例。

3.HDFS 和HBase 各自使用场景

首先一点需要明白:Hbase 是基于HDFS 来存储的。

HDFS:

1. 一次性写入,多次读取。

2. 保证数据的一致性。

3. 主要是可以部署在许多廉价机器中,通过多副本提高可靠性,提供了容错和恢复机制。

HBase:

1. 瞬间写入量很大,数据库不好支撑或需要很高成本支撑的场景。

2. 数据需要长久保存,且量会持久增长到比较大的场景。

3. HBase 不适用与有join,多级索引,表关系复杂的数据模型。

4. 大数据量(100s TB 级数据)且有快速随机访问的需求。如:淘宝的交易历史记录。数据量巨大无容置疑,面向普通用户的请求必然要即时响应。

5. 业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)。


相关文章

PG的pathman分区表工具

一、概述在PG<=10的版本中,都是通过表继承的方式进行分区的,必须使用CHECK CONSTRAINT将每个分区创建为子表 。PostgreSQL 10提供了本机分区,它与经典方法没有什么不同...

聊一聊DevOps工具

聊一聊DevOps工具

DevOps工具越来越多,了解它们以及知道在什么时候使用他们越来越重要。因此,尝试做一些研究,以便我们可以将DevOps产品分类为大家都熟悉的类别或用途。在开始讨论DevOps工具和类别之前,让我们了...

手动模拟 flannel 的 vxlan 实现节点命名空间互通

手动模拟 flannel 的 vxlan 实现节点命名空间互通

在flannel网络插件中实现两个节点互通方式有host-gw vxlan ipip等方式,之前已经手动模拟过host-gw模式,此处再模拟一下vxlan模式点对点访问。手动实验两个命名空间通信Nod...

CDP实操--集群配置Auto-TLS

CDP实操--集群配置Auto-TLS

1.1手动创建CA证书# mkdir -p /tls/ca # ls /tls # cd /tls/ca # openssl genrsa -out ca.key 2048 # cat ca....

MySQL mgr部署文档

MySQL mgr部署文档

一、环境说明1.1服务器信息1.2目录规划1.2目录规划二、环境配置2.1 关闭防火墙和selinuxservice iptabls stop /etc/selinux/conf...

大数据集群部署规划(四)组件建议规格

类型指标名称规格说明HDFS单对NameNode最大文件数1亿-单DataNode最大block数500万GC参数 -Xmx32G单个DataNode磁盘最多block数50万-单个目录下最多文件目录...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。