HBase数据存储
HRegionServer

HBase的数据文件都存储在HDFS上,格式主要有两种:
- HFile:HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制文件,实际上StoreFile就是对HFile做了轻量级的包装,即StoreFile底层就是HFile
- HLog File:HBase中WAL(Write Ahead Log)的存储格式,物理上是Hadoop的Sequence File带项目符号的内容

- HRegionServer管理一些列HRegion对象
- 每个HRegion对应Table中一个Region,Hegion由多个HStore组成
- 每个HStore对应Table中一个Column Family存储
- Column Family就是一个集中的存储单元,故将具有相同IO的Column放在一个Column Family会更高效
HStore(MemStore和StoreFile)

- Client写入:存入MemStore,一直到MemStore满了->Flush成一个StoreFile,直至增长到一定阈值->发出Compact合并操作->多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除->当StoreFiles compact后,逐步形成越来越大的StoreFile->单个StoreFile大小超过一定阈值之后,触发Split操作,会把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到响应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
- HBase只是增加数据,所有的更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入内存即可立即返回,从而保证IO高性能

- StoreFile以HFile格式保存在HDFS上
- Data Block段保存表中的数据,这部分可以被压缩
- Meta Block段(可选)保存用户自定义的KV对,可以被压缩
- File Info段–HFile的元信息,不压缩,用户可以在这一部分添加自己的元信息
- Data Block Index段 -Data Block的索引。每条索引的Key是被索引的block的第一条记录的Key
- Meta Block Index段(可选)-Meta Block的索引
- Trailer -这一段是定长的,保存的是每一段的偏移量
压缩
- HFile的Data Block.Meta Block通常采用压缩方式存储;
好处:压缩之后可以大大减少网络IO和磁盘IO
坏处:需要花费cup进行压缩和解压缩
-HFlie支持的压缩格式:Gzip,Lzo,Snappy…
KeyValue存储结构

- HFile里面的每个KeyValue对就是一个简单的byte数组
- KeyLength和ValueLength:两个固定的长度,分别代表Key和Value的长度
- Key部分:Row Length是固定长度的数值,表示RowKey的长度,Row就是RowKey
- Column Family Length是固定长度的数值,表示Family的长度,接着就是Column Family,再接着是Qualifier,然后是两个固定长度的数值,表示TimeStamp和Key Type(Put/Delete)
- Value部分没有那么复杂的结构,就是纯粹的二进制数据
HLog文件结构


HBase数据存储的更多相关文章
- 使用MapReduce读取HBase数据存储到MySQL
Mapper读取HBase数据 package MapReduce; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hba ...
- BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...
- HBase 数据存储结构
在HBase中, 从逻辑上来讲数据大概就长这样: 单从图中的逻辑模型来看, HBase 和 MySQL 的区别就是: 将不同的列归属与同一个列族下 支持多版本数据 这看着感觉也没有那么太大的区别呀, ...
- 2.1-2.2 HBase数据存储
一.HBase数据检索流程 一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3 1. ...
- hbase数据加盐(Salting)存储与协处理器查询数据的方法
转自: https://blog.csdn.net/finad01/article/details/45952781 ----------------------------------------- ...
- HBase介绍(2)---数据存储结构
在本文中的HBase术语:基于列:column-oriented行:row列组:column families列:column单元:cell 理解HBase(一个开源的Google的BigTable实 ...
- 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系
转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq& ...
- Spark Streaming接收Kafka数据存储到Hbase
Spark Streaming接收Kafka数据存储到Hbase fly spark hbase kafka 主要参考了这篇文章https://yq.aliyun.com/articles/60712 ...
- 大数据存储利器 - Hbase 基础图解
由于疫情原因在家办公,导致很长一段时间没有更新内容,这次终于带来一篇干货,是一篇关于 Hbase架构原理 的分享. Hbase 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大 ...
随机推荐
- linux 分区格式化
要对一个u盘进行分区 windows上直接格式化就行了,但是我的u盘 由于之前做成的系统把u盘分成三个分区,windows只能格式化第一个分区其他两个分区只能看着,理论上windows上也有dd之类的 ...
- saltstack实现自动化扩容
案例:当nginx的并发达到3000,并持续了一段时间时,通过自动化创建一台虚拟机,部署应用最后添加到集群提供服务: zabbix监控(nginx并发量)------->action------ ...
- Jquery12 Ajax
学习要点: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax()方法 6.表单序列化 Ajax ...
- unicode下数据之间的转换
首先mfc下字符串只有两种数据:char(一个字节)和wchar_t(两个字节),很多其他数据类型如TCHAR,WCHAR等都是这个两个基本类型的宏定义,BYTE是uchar 1.对话框打印char* ...
- Mac下需要安装的一些软件及常用的配置文件
常用软件配置文件 1..gitconfig # This is Git's per-user configuration file. [user] name = 张文 email = zhangwen ...
- creator cocos2d-js-min.js 文件廋身 变小 太大解决方法
使用的 cocos creator 1.2 版本, 菜单栏 项目 -- 项目设置 -- 模块设置 里面 把不要的模块去掉
- SaltStack本地管理无master模式-第八篇
Salt本地管理应用场景 1.在边缘节点服务器非常少没有Salt-master 2.零售店,电影院等弱网络环境没有Salt-master 3.快速部署单个服务没有Salt-master 实现 一,安装 ...
- .NET Framework 系统要求
.NET Framework 3.5对操作系统的要求 .NET Framework 4 对操作系统的要求 .NET Framework 4.5对操作系统的要求
- java中使用Ehcache缓存数据
知识点:在java项目中,使用ehcache缓存数据 参考博客:http://www.cnblogs.com/jingmoxukong/p/5975994.html ()概述 Ehcache是一个纯J ...
- 【异常记录(五)】C# 无法发送具有此谓词类型的内容正文错误
今天请求接口直接调了以前写好的方法,结果报了(405)不支持方法的错误,一看是GET写成POST了,改成GET之后,又报了无法发送具有此谓词类型的内容正文错误的错误 原来之前的方法里面有GetRequ ...