Hbase读写数据的原理解析
- 目录
- 1、体系图
- 写数据的流程(参考上图):
- 读数据的流程(参考下图):
目录
1、体系图
针对上图的一些解释:
这里面数据分区(region)存储是为了查询方便(即因为是集群所以能充分利用磁盘的IO性)。添加数据时,数据先进入Hlog–预写日志(数据只能追加不能修改)<防止数据丢失>,数据在Hlog写完后再写到内存中。
HFile:认为是将数据进行序列化。
StoreFile:认为是一个文件。
DFS:调用HDFS的客户端API来将数据传到HDFS。
写数据的流程(参考上图):
1、客户端向hregionServer请求写数据
2、hregionServer将数据先写入hlog中。
3、hregionServer将数据后写入memstore中。
4、当内存中的数据达到阈值64M的时候,将数据Flush到硬盘中,并同时删除内存和hlog中的历史数据。
5、将硬盘中数据通过HFile来序列化,再将数据传输到HDFS进行存储。并对Hlog做一个标记。
6、当HDFS中的数据块达到4块的时候,Hmaster将数据加载到本地进行一个合并(如果合并后数据的大小小于256M则当数据块再次达到4块时(包含小于256M的数据块)将最新4块数据块再次进行合并,此时数据块大于256M)。
7、若数据块大于256M,则将数据重新拆分,将分配后的region重新分配给不同的hregionServer进行管理。
8、当hregionServer宕机后,将hregionServer上的hlog重新分配给不同的hregionServer进行加载(修改.META文件中关于数据所在server的信息)。注意:hlog会同步到HDFS中。
读数据的流程(参考下图):
1、通过zk来获取ROOT表在那个节点上,然后进一步通过-ROOT表和-META表来获取最终的位置信息。
2、数据从内存和硬盘合并后返回到客户端。
PS:由上图可看到,当客户端在执行查询语句的时候,会先到zk上寻找对应-ROOT表(主要描述-META表在哪里)的位置信息(由此也知道ZK在Hbase中的作用),接下来根据-ROOT表中数据进而找到对应的HRegionServer,在对应的HRegionServer上的-META表(主要记载表的元数据信息)中找到对应的Table表在哪个HRegionServer上,再到对应的HRegionServer中查找对应的数据。
Hbase读写数据的原理解析相关推荐
- HDFS读写数据的原理
目录 1 概述 2 HDFS写数据流程 3 HDFS读数据流程 目录 最近由于要准备面试,就把之前学过的东西好好整理下,权当是复习. 下面说下HDFS读写数据的原理. 1 概述 HDFS集群分为两大角 ...
- Hbase读写数据过程详解(hbase0.96版本之前与hbase0.96版本之后对比)
@Author : Spinach | GHB @Link : http://blog.csdn.net/bocai8058 文章目录 HBase架构图 -ROOT-和.META.结构 -ROOT- ...
- hbase读写数据流程
1.hbase写数据速度极高,吞吐量极大,主要归因于写入数据是先写入memstore内存的操作(当然这里还有wal顺序写日志防止机器崩溃),只有等到内存满了.才会批量顺序flush数据到磁盘,这样就避 ...
- AIML知识库数据匹配原理解析
目录: 前言: 1.AIML系统工作流程 2.AIML的核心推理机制 3.推理举例 4.匹配规则及实践中遇到的一些问题的解释 总结: 目录: 前言: 参考:<Alice机理分析与应用研究> ...
- HBase读写性能调优(一)
目录 1.HBase关键参数配置 1.1 写参数调整 1.1.1客户端调优 1.1.2 使用PutList方式提交请求 1.2 Memstore相关 1.2.1 根据 memstore 大小flush ...
- hbase原理与实践_JAVA连接HBase客户端及HBase写入数据和读取数据原理解析
JAVA连接HBase客户端 接着上篇文章进行代码的实践,从JAVA 客户端对 HBase的客户端进行一系列操作 工具类:HbaseUtil 静态代码块一次性创建连接对象 并赋值 返回连接对象 Con ...
- 解析BW:数据源提取数据的原理
解析BW:数据源提取数据的原理 题记:忽然想到这么个问题,后勤数据源和非后勤数据初始化有何区别,然后进行周边的拓展,所以就形成了下文.大部分知识源于TBW350和SAP SDN. 对数据源抽取机制的深 ...
- HBase数据库原理解析
文章目录 1.HBase 数据库介绍 1.1产生背景 1.2简介 1.3表结构逻辑视图 1.3.1行键(RowKey) 1.3.2列簇(Column Family) 1.3.3时间戳(TimeStam ...
- 【Hadoop】HDFS操作、数据上传与下载原理解析、高级特性及底层原理
HDFS操作.数据上传与下载原理解析.高级特性及底层原理 1 HDFS操作 1.1 Web Console网页工具 1.2 命令行 1.2.1 普通的操作命令 1.2.2 管理员命令 1.3 Java ...
最新文章
- eclipse里面M2_REPO引用(Maven2安装总结)
- nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
- python itertools.product_Python的itertools.product 方法
- 参考文献顺序不对_Endnote插入参考文献的保姆级教程
- matlab gui设计实例_S-Funciton应用实例
- c语言实现stack的算法(附完整源码)
- php substr函数的用法6,PHP中substr函数如何使用?
- java 提取url参数_Java提取URL某个参数的值
- 正能量:为web前端发开者代言
- 数字信号处理1:卷积
- idhttp.post方式 调用datasnap rest 远程方法(转咏南兄)
- 整数反转Java_详解 LeetCode_007_整数反转(Java 实现)
- Layer success 层弹出后的成功回调方法
- qt制作刻度条(可用作时间及其他刻度)实现缩放,以及平移
- kiss原则包括什么_KISS原则
- 最近服务器总被webshell攻击,木马也非常猖獗
- 查看users表空间使用率高的原因
- mailx配置TSL发送邮件
- linux的炒股软件“全胜”
- linux drm 架构 基础