hbase实践之数据读取详解
hbase基本存储组织结构与数据读取组织结构对比
Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成。故hbase 1.*版本中的MemstoreScanner变成了SegmentScanner。
对应关系表
Hbase存储结构 | Hbase Scanner体系 |
---|---|
Region | RegionScanner |
Store | StoreScanner |
Memstore | SegmentScanner(memstore级别) |
Storefile | StorefileScanner |
hbase scanner体系与hbase存储组织结构是一一对应的。
hbase写入数据的特点
- flush 写磁盘时,不同ColumnFamily生成不同Hfile。
- 数据采用追加方式写入,在major compaction才发生数据删除或失效。数据的多个版本都会记录在hfile,数据删除也会生成一条记录,只是keytype标记为delete。
数据读取过程详解
数据真正的读取过程只发生在StorefileScanner,其他scanner只是帮助缩小查找范围,类似于多级索引体系。
storefilescanner的读取抽象过程如图所示:
- 组织priorityqueue: 将包含rowkey的hfile文件组织成一个最小堆。最小堆的第一个元素一般是Memstore,从SegmentScanner(MemstoreScanner)开始。
- 根据过滤条件:Rowkey、ColumnFamily、Column等,从当前Scanner依次读取cell(keyvalue)数据;
- 当前Scanner数据扫描结束,扫描下一个Scanner,当前Scanner放到堆尾。
StoreFileScanner中的数据读取细节
要想知道读取细节,首先需要了解HFile的结构:
数据根据索引Root Index Block、Leaf Index Block,定位DataBlock。在64k大小的DataBlock中,可以根据二分查找等算法,定位到数据。
参考文献
- http://hbasefly.com/2016/12/21/hbase-getorscan/
- http://hbasefly.com/2017/06/11/hbase-scan-2/
- http://www.nosqlnotes.com/technotes/hbase/hbase-rowkey/
hbase实践之数据读取详解的更多相关文章
- Pytorch数据读取详解
原文:http://studyai.com/article/11efc2bf#%E9%87%87%E6%A0%B7%E5%99%A8%20Sampler%20&%20BatchSampler ...
- ContentProvider数据访问详解
ContentProvider数据访问详解 Android官方指出的数据存储方式总共有五种:Shared Preferences.网络存储.文件存储.外储存储.SQLite,这些存储方式一般都只是在一 ...
- 【HANA系列】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- JVM 运行时数据区详解
一.运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域. 1.有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,所有的线程共享这些数据区. 2.第二种则 ...
- 学习《深度学习与计算机视觉算法原理框架应用》《大数据架构详解从数据获取到深度学习》PDF代码
<深度学习与计算机视觉 算法原理.框架应用>全书共13章,分为2篇,第1篇基础知识,第2篇实例精讲.用通俗易懂的文字表达公式背后的原理,实例部分提供了一些工具,很实用. <大数据架构 ...
- 【HANA系列】【第一篇】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第一篇]SAP HANA XS ...
- 3dTiles 数据规范详解[1] 介绍
版权:转载请带原地址.https://www.cnblogs.com/onsummer/p/12799366.html @秋意正寒 Web中的三维 html5和webgl技术使得浏览器三维变成了可能. ...
- MongoDb进阶实践之三 Mongodb基本命令详解
一.引言 从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...
- Apache版本的Hadoop HA集群启动详细步骤【包括Zookeeper、HDFS HA、YARN HA、HBase HA】(图文详解)
不多说,直接上干货! 1.先每台机器的zookeeper启动(bigdata-pro01.kfk.com.bigdata-pro02.kfk.com.bigdata-pro03.kfk.com) 2. ...
随机推荐
- ios客户端浏览器样式加载失效问题
最近线上测试中出现一个奇怪的问题,ios客户端浏览器样式加载失效. 从表象来看,同样的css,安卓手机上可以正常展示,但是到ios手机上首次进入页面就不能正常显示 这时候,我们首先会考虑是不是ios设 ...
- Python2 中字典实现的分析【翻译】
在这片文章中会介绍 Python2 中字典的实现,Hash 冲突的解决方法以及在 C 语言中 Python 字典的具体结构,并分析了数据插入和删除的过程.翻译自python-dictionary-im ...
- kubeadm 部署kubernetes1.14
节点信息: 主机名 IP 角色 k8s-master 10.10.0.10 master节点 k8s-node01 10.10.0.11 集群worke节点 k8s-node02 10.10.0.12 ...
- Optional 理解
目录 Optional 理解 1. 含义 2. Optional 类中方法 3. Optional 对象不应该作为方法参数 Optional 理解 1. 含义 Optional 是一个容器对象,该容器 ...
- 音视频入门-02-RGB拼图
* 音视频入门文章目录 * 图片 & 像素点 & RGB 平时浏览的图片看不出像素点: 图片放大时,可以看出图片是一个个像素点组成的: 每个像素点的颜色可以用 RGB 表示: RGB ...
- C#常用数据结构
常碰到的几种数据结构:Array,ArrayList,List,LinkedList,Queue,Stack,Dictionary<K,T>: 1.数组是最简单的数据结构.其具有如下特点: ...
- Python笔记-备忘
一.向列表添加元素 x.append(y) #末尾添加一个元素 x.extend([y,z]) #末尾添加多个元素 x.insert(index,y) 二.向列表获取元素 x[index] 三.从列表 ...
- redis cluster异地数据迁移,扩容,缩容
由于项目的服务器分布在重庆,上海,台北,休斯顿,所以需要做异地容灾需求.当前的mysql,redis cluster,elastic search都在重庆的如果重庆停电了,整个应用都不能用了. 现在考 ...
- ajax简单页面
简单的注册页面运用ajax 主页面 <head><meta http-equiv="Content-Type" content="text/html; ...
- 脱壳系列—— *加密脱壳(Android使用手册破解)
作者:i春秋作家HAI_ZHU 0×00 前言 好久没有写文了,要好好开动一下了.很多事情要忙.这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久. 前置内容 HAI_使用手册 知识总结 0×0 ...