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 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大 ...
随机推荐
- 20145335郝昊《java程序设计》第1次实验报告
2014535郝昊<java程序设计>实验1实验报告 实验名称 利用java语言实现凯撒密码,并运行测试. 实验内容 用java语言实现凯撒密码,凯撒密码是一种代替的移位密码,它将明文加密 ...
- 怎样让.bat文件直接运行不需要右键管理员权限
:: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2&g ...
- Qt、MVB
使用的陪测网卡是[众志诚MVB网卡],通过串口配置,可以接收和发送MVB数据. 一.MVB通信介绍 对于某一节点[如众志诚MVB网卡],为其配置0x710和0x720端口为源端口,用于发送数据,为其配 ...
- cogs 547:[HAOI2011] 防线修建
★★★☆ 输入文件:defense.in 输出文件:defense.out 简单对比 时间限制:1 s 内存限制:128 MB 题目描述: 近来A国和B国的矛盾激化,为了预防不测,A国 ...
- FASTQ format
FASTQ format 每个FASTQ文件中每个序列通常有四行信息: 1: 以 '@' 字符开头,后面紧接着的是序列标识符和可选字段的描述(类似FASTA title line). 2: 序列 3: ...
- HttpServletRequest request方法详解
//1.获取请求参数 //获取参数的单个值,如有多个则只返回第一个 String parameter1 = request.getParameter("demo"); //获取参数 ...
- String类自带的字符串处理原生方法
一.取出指定索引的字符 —— 使用charAt()方法 二.字符串与字符数组的转换 三.字符串转大写.先转换成数组,然后再改变ASCII码 四.给定一个字符串,要求判断其是否由数字组成 五.字符串与字 ...
- 20165332实验四 Android开发基础
20165332 实验四 Android程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:延亿卓 学号:20165332 指导教师:娄嘉鹏 实验日期:2018年5月14日 实 ...
- 开启Tomcat APR运行模式,优化并发性能
Tomcat支持三种接收请求的处理方式:BIO.NIO.APR 1>.BIO模式:阻塞式I/O操作,表示Tomcat使用的是传统JavaI/O操作(即Java.io包及其子包).Tomcat7以 ...
- 多网卡绑定(bond)
通过以下命令查看bond0的工作状态查询能详细的掌握bonding的工作状态,如这个绑定各网卡的工作状态.主备关系.链路侦测时间[root@ASMTS ~]# cat /proc/net/bondin ...