HBase 数据读写流程
HBase 数据读写流程
读数据
HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中
假设现在想在用户表中获取 row key 为 row0001 的用户信息
要想取得这条数据,就需要先找到含有此条记录的 region
HBase 是如何定位到具体 regionserver 中的具体 region 的呢?
HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息
例如 region 的 开始KEY、结束KEY、所在server的地址……
hbase:meta 表就像一个目录,通过他可以快速定位数据的实际位置
hbase:meta 表是存储在 ZooKeeper 中的,所以客户端就需要先访问 ZooKeeper,获取到 hbase:meta,从中查询出目标数据是在哪个 regionserver 中的哪个 region 中,然后到 region 中进行读取
我们可能会感觉这个寻址路径有点长,所以客户端会将查询过的位置信息保存缓存起来,方便以后快速读取
写数据
写操作会被分配到对应的 regionserver 进行处理,先回顾一下 regionserver 的结构
从客户端来看,写操作比较简单,写请求到达 regionserver 后,这些修改会先被写到 MemStore和 HLog 中,成功写入后便会通知客户端写入完成了
MemStore 是内存缓存,保存最近更新的数据
HLog 是日志文件,记录着所有的更新操作
对于系统来说,写操作还没完,系统会定期调用刷新缓存的方法,把MemStore中的内容写入文件,生成一个新的 StoreFile,然后把缓存清空,并在HLog中做一个标记,表明上面的内容已经写入文件
这样,数据就真正落地了,但写操作会引发一些后续问题,例如HLog日志文件越来越大了、StoreFile越来越多了、当前region越来越大了,所以,系统有还有更多的工作需要做
系统会定期清理HLog日志文件,把其中已经写入文件的记录删除
当 StoreFile 文件数量超过设定值时,会触发合并操作,合并成一个大文件,如果这个大文件超过了设定值,会再被分割开
当region的大小达到阈值时,会被切分开,生成一个新的region,HMaster会对其进行管理,分配到合适的 regionserver
region的变化后,系统还需要对
hbase:meta表进行维护
HBase 数据读写流程的更多相关文章
- HBase数据读写流程(1.3.1)
===数据写入流程=== 源码:https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/ha ...
- Hbase数据读写流程
From: https://blog.csdn.net/wuxintdrh/article/details/69056188 写操作: Client写入,存入Memstore,Memstore满则Fl ...
- HBase - 数据写入流程解析
本文由 网易云发布. 作者:范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻松 ...
- Hbase的读写流程
HBase读写流程 1.HBase读数据流程 HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在 ...
- HBase数据存取流程
一.HBase的特点是什么 1.HBase一个分布式的基于列式存储或者行式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理. 2.HBase适合存储半结构化或非结构化数据,对于 ...
- JuiceFS 数据读写流程详解
对于文件系统而言,其读写的效率对整体的系统性能有决定性的影响,本文我们将通过介绍 JuiceFS 的读写请求处理流程,让大家对 JuiceFS 的特性有更进一步的了解. 写入流程 JuiceFS 对大 ...
- 2.1-2.2 HBase数据存储
一.HBase数据检索流程 一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3 1. ...
- HBase 文件读写过程描述
HBase 数据读写过程描述 我们熟悉的在 Hadoop 使用的文件格式有许多种,例如: Avro:用于 HDFS 数据序序列化与 Parquet:常见于 Hive 数据文件保存在 HDFS中 HFi ...
- 【HBase】知识小结+HMaster选举、故障恢复、读写流程
1:什么是HBase HBase是一个高可靠性,高性能,面向列,可伸缩的分布式数据库,提供海量数据存储功能,一个结构化的分布式存储系统,不同于一般的关系型数据库,它适合半结构化和非结构化数据存储. 2 ...
随机推荐
- 安卓 android ListView 数据填充
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...
- 解决jquery mobile的header和footer在点击屏幕的时候消失的办法
给header和footer添加 data-position="fixed" 和 data-tap-toggle="false"即可,代码如下: <div ...
- Spring.Net 初探之牛刀小试
又是一个周末,感受着外面30°的高温,果断宅在家里,闲来无事,就研究了一下spring .net 框架, 在这里不得不说 vs2013确实是一个强大的开发工具(起码对于.net开发来说是这样的),哈哈 ...
- Window Azure ServiceBus Messaging消息队列技术系列1-基本概念和架构
前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家. 首先,Windows Azure提供了两种类型 ...
- SQL语句 还原未知逻辑名称数据库
1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name): ...
- percona server 二进制安装下编译tpcc-mysql的坑
出于习惯,percona server的部署都是通过二进制包自动化安装,结果遇到一个硕大无比的坑,编译TPCC-MySQL时出现警告 10:49:36 root@DB-Master:~/tpcc-my ...
- wampserver 2.5多站点配置
wampserver2.5版本与之前老版本配置有区别,假设wamp安装在d:/wamp下.第一步:修改D:/wamp/bin/apache/apache2.4.9/conf/httpd.conf 文件 ...
- [已解决] git 重命名文件夹
git mv oldfolder newfolder 原文地址:http://www.cnblogs.com/gifisan/p/5980608.html
- js使用模板快速填充数据
1.html <!DOCTYPE html> <html> <head> <title>模板标签</title> </head> ...
- input 的blur事件之后button的onclick事件不执行解决方案
最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候.出现网页崩死的情况: 经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大 ...