首页 > 其他分享 >HBase读写流程以及为什么面对百亿数据依旧可以很快

HBase读写流程以及为什么面对百亿数据依旧可以很快

时间:2024-05-11 10:22:22浏览次数:15  
标签:列簇 存储 百亿 读写 regionserver HBase 数据 HFile

HBase是什么:

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于存储海量的结构化、非结构化、半结构化的数据(底层存储的只有字节数组类型的数据)

HBase写流程

客户端向zookeeper建立连接并发送请求获取meta表的元数据的位置信息,和被哪个regionserver所管理,连接这个meta表的regionserver(get方式只返回一个regionserver,scan方式返回所有的regionserver),然后读取regionserver上的数据

HBase读流程

客户端向zookeeper建立连接并发送请求获取meta表的元数据的位置信息,和被哪个regionserver所管理

连接这个meta表的regionserver(get方式只返回一个regionserver,scan方式返回所有的regionserver),然后开始写操作

首先将数据写入到HLog(WAL)中,然后将数据写入到对应store中的memstore中

随着客户端写入的数据越来越多,memstore中的数据会越来越多,当内存中的数据达到128M或者时间达到1h的时候会放入blockcache中,然后生成新的memstore继续接收用户过来的数据

当blockcache的大小达到阈值(85%)的时候会触发flush机制,将数据刷新到HDFS中形成HFile小文件

随着刷新的次数变多,HDFS上的HFile文件会越来越多,当HFile文件的数量达到三个及以上的时候会触发合并机制,将所有小的HFile合并成一个大的HFile

当合并的次数越来越多,合并的文件也会越来越大,达到一定阈值的时候(2.0之后为10G),会触发分裂机制,会将大的HFile文件一分为二,同时管理整个HFile的region也会被一分为二

所以会形成两个新的region和两个新的HFile文件,每个storefile和每个HFile相对应,合并之前的文件会慢慢被删除

面对百亿数据,HBase为什么查询速度依然非常快(面试题)

查询过程:

举个例子,当有一个表的数据有100亿业务数据,全在HBase集群上,这些数据大小为10T,假设被切分为5000个region,那么每个region大小就是2G,

由于HBase存储数据是按照列簇进行存储的,假设一条记录有400个字段,每100个字段为一个列簇,这四个列簇是分开存储的,每个列簇的大小就是500M,

如果要查询的数据在其中一个列簇上,一个列簇包含一个或者多个HFile,这500M的数据是排序好了的,查询的时候会使用二分查找,这样需要查找的大小又减半了,只要250M

每个HFile文件中,都是以键值对方式进行存储的,只要遍历键key的位置和判断条件即可,而key的长度有限,假设key/value比例是1:24,250M的数据只需要遍历10M左右的数据

按照硬盘的类型,速度也不同,如果扫描的时候加入Boolean过滤器,能更快定位到数据,HBase中有内存缓存机制,如果数据在内存中,速度会更跨

标签:列簇,存储,百亿,读写,regionserver,HBase,数据,HFile
From: https://www.cnblogs.com/peculiar/p/18185907

相关文章

  • HBase架构
    HBase架构HBase概述:HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于存储海量的结构化或者半结构化,非结构化的数据(底层存储的类型只有一种,是字节数组)1、HBase是可以提供实时计算的分布式数据库,数据保存在HDFS分布式文件系统上,由HDFS保证其高容错性2、HBase上......
  • HBase API
    HBaseJavaAPI<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--https://mvnrepository.com/artifac......
  • HBase Meta 元信息表修复实践
    作者:vivo互联网大数据团队-HuangGuihu、ChenShengzunHBase是一款开源高可靠、高可扩展性、高性能的分布式非关系型数据库,广泛应用于大数据处理、实时计算、数据存储和检索等领域。在分布式集群中,硬件故障是一种常态,硬件故障可能导致节点或者集群级别服务中断、meta表损坏......
  • 一文读懂顺序读写、随机读写、4K读写、IOPS值等,值得一读的科普文
    闪存应用产品主要包括固态硬盘SSD、移动固态硬盘PSSD、U盘、microSD卡(TF卡)、SD卡等,在描述这些产品性能的时候,经常会提到顺序读/写速度、随机读写/4K读写性能、IOPS等参数,相关的测评文章往往会将这方面的测试结果用截图的形式来表达某某闪存应用产品性能如何。以下是某款高速移动......
  • python读写json文件
    1.新建json文件打开记事本,重命名为.json后缀使用的样例如下,注意看json文件格式:{"server":{"host":"example.com","port":443,"protocol":"https"},"authentication":{......
  • snap7读写PLC变量
    1.读DB'''#copysnap7.dll&snap7.libfilestopythonrootpathfirstpipinstallsnap7'''importsnap7importstructfromsnap7importutil#创建通讯客户端实例plc=snap7.client.Client()#连接至PLCplc.connect('192.1......
  • 长江存储PC411 512GB SSD实测:旗舰读写性能 温度表现逆天
    一、前言:搭载长江存储PC411512GBSSD的机械革命蛟龙16S不久前我们测试过某品牌的笔记本,其搭载的PCIe4.0SSD在高负载运行时温度轻松突破70度,导致性能下降了20%左右。对于笔记本而言,由于无法像台式电脑那样给SSD安装厚重的散热装甲,在搭载高性能PCIe4.0SSD时,很容易出现温度失......
  • Qt Excel读写 QXlsx的安装配置以及测试
    引言Qt无自带的库处理Excel文件,但可通过QAxObject借助COM接口进行Excel的读写1。亦可使用免费的开源第三方库:QXlsx,一个基于Qt库开发的用于读写MicrosoftExcel文件的C++库。它提供了一组简单易用的API,可以方便地创建、修改和操作Excel文件。一、安装配置1.下载源码,如下图所......
  • Qt Excel的读写
    在Qt中,可以使用第三方库来处理Excel文件,常用的库包括:QXlsx:一个基于Qt的Excel文件处理库,支持读写Excel文件。LibXL:一个商业的Excel文件处理库,支持多种编程语言,包括C++。OpenXLSX:一个开源的Excel文件处理库,支持读写Excel文件,支持多种操作系统。下......
  • 2.文件读写操作
    """一.有如下文件,1.txt,里面的内容为:键盘敲烂,月薪过万,键盘落灰狗屎一堆""""""分别完成以下功能:a:将原文件全部读出来并打印b:在原文件后面追加一行内容:信不信由你,反正我信了.c:将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了......