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写入数据的特点

  1. flush 写磁盘时,不同ColumnFamily生成不同Hfile。
  2. 数据采用追加方式写入,在major compaction才发生数据删除或失效。数据的多个版本都会记录在hfile,数据删除也会生成一条记录,只是keytype标记为delete。

数据读取过程详解

数据真正的读取过程只发生在StorefileScanner,其他scanner只是帮助缩小查找范围,类似于多级索引体系。

storefilescanner的读取抽象过程如图所示:

  1. 组织priorityqueue: 将包含rowkey的hfile文件组织成一个最小堆。最小堆的第一个元素一般是Memstore,从SegmentScanner(MemstoreScanner)开始。
  2. 根据过滤条件:Rowkey、ColumnFamily、Column等,从当前Scanner依次读取cell(keyvalue)数据;
  3. 当前Scanner数据扫描结束,扫描下一个Scanner,当前Scanner放到堆尾。

StoreFileScanner中的数据读取细节

要想知道读取细节,首先需要了解HFile的结构:

数据根据索引Root Index Block、Leaf Index Block,定位DataBlock。在64k大小的DataBlock中,可以根据二分查找等算法,定位到数据。

参考文献

hbase实践之数据读取详解的更多相关文章

  1. Pytorch数据读取详解

    原文:http://studyai.com/article/11efc2bf#%E9%87%87%E6%A0%B7%E5%99%A8%20Sampler%20&%20BatchSampler ...

  2. ContentProvider数据访问详解

    ContentProvider数据访问详解 Android官方指出的数据存储方式总共有五种:Shared Preferences.网络存储.文件存储.外储存储.SQLite,这些存储方式一般都只是在一 ...

  3. 【HANA系列】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  4. JVM 运行时数据区详解

    一.运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域. 1.有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,所有的线程共享这些数据区. 2.第二种则 ...

  5. 学习《深度学习与计算机视觉算法原理框架应用》《大数据架构详解从数据获取到深度学习》PDF代码

    <深度学习与计算机视觉 算法原理.框架应用>全书共13章,分为2篇,第1篇基础知识,第2篇实例精讲.用通俗易懂的文字表达公式背后的原理,实例部分提供了一些工具,很实用. <大数据架构 ...

  6. 【HANA系列】【第一篇】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第一篇]SAP HANA XS ...

  7. 3dTiles 数据规范详解[1] 介绍

    版权:转载请带原地址.https://www.cnblogs.com/onsummer/p/12799366.html @秋意正寒 Web中的三维 html5和webgl技术使得浏览器三维变成了可能. ...

  8. MongoDb进阶实践之三 Mongodb基本命令详解

    一.引言              从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...

  9. 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. ...

随机推荐

  1. python中文编码 - python基础入门(5)

    python到目前为止,一共有两个版本,分别是2.x和3.x版本,根据官方正式通知2020年停止对python更新和维护,距离今天还有110天左右,所以正在学习python的小伙伴应该暗中庆幸一波. ...

  2. 我叫Tomcat:一款web服务器

    我叫Tomcat:一款web服务器 如何将我们的 Java 代码,运行在网络上,初学时,首先接触到的一般都是Servlet以及Jsp(或略过Jsp)而 Tomcat 就是这两者的容器,帮你处理动态网页 ...

  3. Python enumerate()内置函数

    Python enumerate()内置函数 文章参考 描述 enumerate()函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环 ...

  4. 解决GitHub下载慢问题,不用修改HOSTS文件

    写这篇文章缘由是我用的一款Github上的软件软件版本更新,想去Github上下载新的版本,结果下载速度居然只有几k,还老是下载失败,然后去修改HOSTS文件(我看文章基本都是叫修改这个),修改完成后 ...

  5. 给初学PHP的学习线路和建议

    直入主题  1.熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. 2.理解动态语言的概念和运做机制,熟悉基本的PHP语法. 3.学习如何将PHP与HTML结 ...

  6. solr-jd

    springMVC.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  7. java 框架-消息队列ActiveMQ

    https://www.jianshu.com/p/ecdc6eab554c ActiveMQ从入门到精通(一) 22017.03.11 21:40:42字数 2650阅读 57286 这是关于消息中 ...

  8. HelenOS

    HelenOS 来源 http://www.helenos.org/ 关于HELENOS HelenOS是一种基于便携式微内核的多服务器操作系统,从头开始设计和实现.它将关键操作系统功能(如文件系统, ...

  9. JS基础_使用工厂方法创建对象(了解下就行了,用的不多)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. centos mysql数据库问题:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'(转)

    问题描述: 安装好数据库MySQL,进入mysql,设置号密码后,退出的时候,利用密码无法进入,直接回车后可进入,无法看到数据库mysql,use mysql返回错误:ERROR 1044 (4200 ...