面对百亿数据,Hbase为什么查询速度依然非常快?

2023-05-16

HBase适合存储PB级别的海量数据(百亿千亿量级条记录),如果根据记录主键Rowkey来查询,能在几十到百毫秒内返回数据。

那么Hbase是如何做到的呢?

接下来,介绍一下数据的查询思路和过程。

查询过程:

第1步:

项目有100亿业务数据,存储在一个Hbase集群上(由多个服务器数据节点构成),每个数据节点上有若干个Region(区域),每个Region实际上就是Hbase中一批数据的集合(比如20万条数据)。

我们现在开始根据主键RowKey来查询对应的记录,Hbase的Master帮我们迅速定位到该记录所在的数据节点,以及数据节点中的Region,目前我们有100亿条记录,占空间10TB。所有记录被切分成5000个Region,那么现在,每个Region就是2G。

由于记录在1个Region中,所以现在我们只要查询这2G的记录文件,就能找到对应记录。

第2步:

由于Hbase存储数据是按照列族存储的。比如一条记录有300个字段,前100个字段是人员信息相关,这是一个列簇(列的集合);中间100个字段是公司信息相关,是一个列簇。最后100个字段是人员交易信息相关,也是一个列簇。

这三个列簇是分开存储的。这样的存储结构就保证了Hbase可支持的表的宽度(字段数)可达到百万个。

这时,假设2G的Region文件中,分为4个列族,那么每个列族就是500M。

到这里,我们只需要遍历这500M的列簇就可以找到对应的记录。

第3步:

如果要查询的记录在其中1个列族上,1个列族在底层,包含1个或者多个HFile。

HFile可以理解为列簇底层更细粒度的存储文件。

如果一个HFile一般的大小为100M,那么该列族包含5个HFile在磁盘上或内存中。

由于Hbase的内存进而磁盘中的数据是排好序的,要查询的记录有可能在最前面,也有可能在最后面,按平均来算,我们只需遍历2.5个HFile共250M,即可找到对应的记录。

第4步:

每个HFile中,是以键值对(key/value)方式存储,只要遍历文件中的key位置即可,并判断符合条件可以了。

一般key是有限的长度,假设key/value比是1:25,最终只需要10M的数据量,就可获取的对应的记录。

如果数据在机械磁盘上,按其访问速度100M/S,只需0.1秒即可查到。

如果是SSD的话,0.01秒即可查到。

当然,Hbase是有内存缓存机制的,如果数据在内存中,效率会更高。


总结

正因为以上大致的查询思路,保证了Hbase即使随着数据量的剧增,也不会导致查询性能的下降。

同时,HBase是一个面向列存储的数据库(列簇机制),当表字段非常多时,可以把其中一些字段独立出来放在一部分机器上,而另外一些字段放到另一部分机器上,分散存储,分散列查询。

正由于这样复杂的存储结构和分布式的存储方式,保证了Hbase海量数据下的查询效率。


喜欢本文的朋友,欢迎关注、转发、评论,让我们一起成为有智慧的架构师,全网同号!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面对百亿数据,Hbase为什么查询速度依然非常快? 的相关文章

随机推荐

  • C#中,FTP同步或异步读取大量文件

    一次快速读取上万个文件中的内容 在C 中 xff0c 可以使用FTP客户端类 xff08 如FtpWebRequest xff09 来连接FTP服务器并进行文件操作 一次快速读取上万个文件中的内容 xff0c 可以采用多线程的方式并发读取文
  • Ubuntu远程桌面链接树莓派

    树莓派安装远程桌面 前言树莓派安装real vnc serverubuntu安装vnc viewer 前言 网上的教程太杂乱 xff0c 就为这个事情找了不少资料 xff0c 最后终于自己摸清楚了 事情其实很简单 xff0c 就两部分 xf
  • 岁月不曾辜负谁--写于26岁生日前

    姑且当这是年终总结吧 xff0c 今天是平安夜也是我的25岁青春岁月的最后一天 回首2013 xff0c 3月份经朋友劝说和推荐来到了徐州继续我的挨踢生涯 xff0c 11月份与男友的恋情修的正果步入婚姻的殿堂 xff0c 这就是这一年里发
  • Nvidia JetsonTx2 使用中遇到的坑与填坑方法

    1 Tx2 买回来后最好刷机 xff0c 自带系统没有cuda等驱动 xff0c 重新刷JetPack包 Tx2刷JetPack 3 3方法 xff1a https blog csdn net long19960208 article de
  • Shell 的赋值命令

    首先 Shell赋值时 等号左右两边是不能有空格的 一般赋值 s 61 123 echo s 日期赋值 s 61 96 date 43 34 Y m d 34 96 注意 96 不是单引号 而是 下面的点 echo s 96 对字符串进行连
  • centos7开启telnet登陆

    centos7安装telnet xff0c 开启telnet登陆 xff1a xff08 1 xff09 安装命令 xff1a yum install telnet server yum install xinetd xff08 2 xff
  • 使用iptables命令配置防火墙重启失效的解决办法

    该命令列出当前的防火墙配置 iptables save保存配置 centos系统 保存配置到文件 service iptables save 开机自动启用 chkconfig iptables on 若不是centos系统 保存 iptab
  • MFC 中设置定时器Timer的方法

    在用settimer之前要知道 1 同1个 settimer xff08 xff09 在一个循环里设置一次就行了 xff0c 要是让其不断的set xff0c 是很可能执行不到ontimer xff08 xff09 消息处理函数的 xff0
  • 控制中的各种函数MATLAB仿真

    控制系统的MATLAB仿真 1 MATLAB简介 MATLAB是Mathworks公司开发的一种集数值计算 符号计算和图形可视化三大基本功能于一体的功能强大 操作简单的优秀工程计算应用软件 MATLAB不仅可以处理代数问题和数值分析问题 x
  • 使用VNC实现Windows7远程CentOS的桌面

    使用VNC实现Windows7远程CentOS的桌面 一 CentOS服务端配置 1 下载Putty远程登录软件 下载windows版本 输入CentOS计算机的ip xff0c 登录CentOS计算机的终端 xff08 下载Putty地址
  • iperf3使用方法(Windows与MacOS,iOS)

    Windows下载 https iperf fr iperf download php windows MacOS下载 brew install iperf3 iOS App Store搜索 iperf 61 61 61 61 61 在软路
  • 树莓派raspberry pi 安装远程工具teamviewer

    raspberry pi 安装远程工具teamviewer 1 下载Teamviewer wget http download teamviewer com download linux version 11x teamviewer hos
  • windows配置端口映射到其它电脑(转载)

    windows配置端口映射到其它电脑 转载 A 配置方法 假定需要通过192 168 1 8的14941端口连接192 168 1 118的1494端口 xff0c 则需要在192 168 1 8主机的命令行输入如下语句 netsh int
  • RFID ACCESS CONTROL门禁密码修改

    1 必须先进入编程方式 xff1a 按 xff3b xff3d xff0b xff3b 6位编程密码 如012345 xff0c 忘记编程密码参考第6步重置 xff0c 嘟嘟两声响 xff0c xff08 红灯闪烁 xff0c 绿灯长亮 出
  • 【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition

    参考文献 xff1a Liu W Wen Y Yu Z et al SphereFace Deep Hypersphere Embedding for Face Recognition J arXiv preprint arXiv 1704
  • vue3项目使用node连接数据库(前后端分离)

    学习关键语句 xff1a vue连接mysql数据库 vue项目连接后台数据库配置 vue通过node连接MySQL数据库 写在前面 为了快速学习nodejs制作后端并和数据库进行交互的方法 所以赶紧写一篇这样的文章出来 如果你对这篇文章中
  • 机器学习实战-64:线性判别分析降维算法(Linear Discriminant Analysis)

    机器学习实战 64 线性判别分析降维算法 深度学习原理与实践 开源图书 总目录 xff0c 建议收藏 xff0c 告别碎片阅读 xff01 机器学习分为监督学习 无监督学习和半监督学习 强化学习 无监督学习最常应用的场景是聚类 cluste
  • 计算机硬件基础与实践探知

    计算机硬件的五大单元 在介绍计算机硬件基础之前 xff0c 我们必须了解一下计算机硬件的五大单元 xff0c 注意这里说的是硬件的五大单元并不是计算机五大单元 输入设备 无论是计算机五大单元还是计算机硬件的五大单元 xff0c 这其中必须包
  • 去除Google Chrome新标签页中的8个缩略图

    在Google Chrome中 xff0c 新建空白页时 xff0c 会显示如下缩略图 xff0c 并且会看到最近的一些访问记录 xff1a 对于本人自己感觉不是很美观 xff0c 我喜欢更简洁的界面 xff0c 而且也看不全我喜爱的背景图
  • 面对百亿数据,Hbase为什么查询速度依然非常快?

    HBase适合存储PB级别的海量数据 xff08 百亿千亿量级条记录 xff09 xff0c 如果根据记录主键Rowkey来查询 xff0c 能在几十到百毫秒内返回数据 那么Hbase是如何做到的呢 xff1f 接下来 xff0c 介绍一下