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 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大 ...
随机推荐
- DNSmasq安装配置
dns安装配置yum -y install dnsmasq dns配置文件vi /etc/dnsmasq.confresolv-file=/etc/resolv.dnsmasq.confaddn-ho ...
- Elasticsearch+Kibana+Logstash安装
安装环境: [root@node- src]# cat /etc/redhat-release CentOS Linux release (Core) 安装之前关闭防火墙 firewalld 和 se ...
- HAL编译问题
1 make:进入目录'/opt/FriendlyARM/tiny4412/android/android-4.1.2'make: *** 没有规则可以创建“out/target/product/ge ...
- SpringBoot ApplicationRunner/CommandLineRunner
CommandLineRunner.ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自动启动). CommandLineRunner.ApplicationRunne ...
- wechat4j获取用户昵称乱码修复
项目对接微信公众号平台时,微信的官方给出的建议是使用wechat4j.官方建议的,自然心里踏实,但实际用起来时发现wechat4j埋有很多雷,最让人心烦意乱的就是中文乱码问题. 之前写过一篇为JAXB ...
- mysql完全卸载
转载自(http://blog.csdn.net/typa01_kk/article/details/49057073) #################CentOS7下MySQL的卸载###### ...
- RunLoop Note
I. Begin from Apple Document Apple describes the priciples of runloop in Threading Programming Guide ...
- 解题报告:poj 3070 - 矩阵快速幂简单应用
2017-09-13 19:22:01 writer:pprp 题意很简单,就是通过矩阵快速幂进行运算,得到斐波那契数列靠后的位数 . 这是原理,实现部分就是矩阵的快速幂,也就是二分来做 矩阵快速幂可 ...
- 什么是ZooKeeper(一)(通俗易懂)
以前在做别的项目时用过zk,但没有过多深入的学习,本着通俗易懂.简单方便学习成本低的方式,建议大家耐心看完,如果文章中有不清楚的地方,可发私信进步探讨! 学习zk共分为二部分,第一部分主要以理论为主. ...
- maven笔记(1)
maven环境搭建:http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html 项目管理利器(Maven)——常用的构建命令1. mvn - ...