西柚理财

  • 首页
  • 金融理财
  • 财经知识
  • 理财课堂
  • 新闻热点
  • 常见问题
  1. 首页
  2. 常见问题
  3. 正文

布隆过滤器hbase布隆过滤器hbase

作者:spring 发布时间:2023-10-25 栏目: 常见问题 0浏览

老铁们,大家好,相信还有很多朋友对于布隆过滤器 hbase和布隆过滤器hbase的相关问题不太懂,没关系,今天就由我来为大家分享分享布隆过滤器 hbase以及布隆过滤器hbase的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

人工智能

本文目录

region下所有的hfile默认存放hbase的核心数据结构是hbase通过什么快速判断用户数据不存在HBase是什么呢,都有哪些特点呢region下所有的hfile默认存放HBase是GoogleBigtable的开源实现,是一个sparse,distributed,persistentmulti-dimensionalsortedmap,map的key由rowkey,columnfamily,qualifier,timestamp,type组成,并据此排序。

架构图

Hbase的架构是存算分离的,方便扩展,底层存储使用HDFS,HBase相关组件提供计算功能,部分元数据存储在ZK中。架构图如下:

数据模型

table:表,一个表包含多行数据

row:行,一行数据包含一个唯一标识rowkey、多个column以及对应的值。在HBase中,一张表中所有row都按照rowkey的字典序由小到大排序。

column:列,与关系型数据库中的列不同,HBase中的column由columnfamily(列簇)以及qualifier(列名)两部分组成,两者中间使用":"相连。比如contents:html,其中contents为列簇,ht

农村土地承包经营权司法解释

ml为列簇下具体的一列。columnfamily在表创建的时候需要指定,不能随意增减。一个columnfamily下可以有任意多个qualifier,也就是HBase中的列可以动态增加,理论上甚至可以扩展到上百万列。

timestamp:时间戳,每个cell在写入HBase的时候都会默认分配一个时间戳作为该cell的版本,当然,用户也可以在写入的时候自带时间戳。HBase支持多版本特性,即同一rowkey、column下可以有多个value存在,这些value使用timestamp作为版本号,版本越大,表示数据越新。

cell:单元格,由五元组(row,column,timestamp,type,value)组成的结构,其中type表示Put/Delete这样的操作类型,timestamp代表这个cell的版本。这个结构在数据库中实际是以KV结构存储的,其中(row,column,timestamp,type)是K,value字段对应KV结构的V。在每个HFile文件中,KV按序存储,按照KV中key的字典序进行排序。先比较rowkey,rowkey小的排在前面;如果rowkey相同,再比较column,即columnfamily:qualifier,column小的排在前面;如果column还相同,再比较时间戳timestamp,即版本信息,timestamp大的排在前面(也就是最新的排在前面)。

数据文件的物理存储

HFile在HDFS上按照table、region、columnfamily分目录存储,如下所示:

/hbase/data/default/table-name/region-name/column-family-name/hfile-name

其中default是默认namespace,一个列簇下的所有HFile文件都在同一个列簇目录下,按照文件的新旧程度放置在LSM-tree的不同level,每个level只有一个HFile文件。

Compact

MinorCompact:选取部分尺寸小的、LSM-tree中相邻level的HFile,将它们合并成更大的HFile,但是不清理type为deletes或expiredversions的数据。

MajorCompact:将一个Store中所有的HFile合并成一个HFile,由于只有一个HFile文件,这个文件可能会很大,这也是HFile文件结构中索引是多层结构的原因。这个过程还会完全清理三类无意义数据:被删除的数据、TTL过期数据、版本号超过设定版本号的数据。

RegionServer

一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用作WAL;BlockCache可以将block缓存在内存中以提升数据读取性能;Region是HBase中数据表的一个数据分片,一个RegionServer通常会负责多个Region的数据读写,Region可以来自相同或不同表。Region由多个Store组成,一个Store负责一个列簇的数据,比如一个表中有两个列簇,这个表的所有Region就都会包含两个Store。每个Store包含一个MemStore和多个HFile,用户数据写入时会先写HLog,然后将对应列簇数据写入相应的MemStore,一旦MemStore大小超过设定阈值,系统就会将MemStore中的数据落盘形成HFile文件,HFile存放在HDFS上。

这里HLog、MemStore、HFile与LevelDB中对应的相关文件:日志文件、memtable、sstable,格式也有相似之处,先不展开介绍。

ACID

HBase保证单行事务的ACID特性,跨行无法保证。作为该限制的结果之一就是不支持辅助索引,对数据项的更新需要同时对辅助索引进行更新,而这不是原子的。单行事务的保证是通过将单行中涉及的多个column修改编码为一条WAL来完成的,即使跨多个columnfamily也可以。

hbase:meta表

hbase:meta表就是分区表,分区表作用可以参考

狂奔的蜗牛:可扩展性之数据分区

该表存储了Region到RegionServer的映射,用来路由client读写请求、进行负载均衡等操作。该表的所在RS节点存储在ZK上。表结构如下:

Key

Regionkeyoftheformat([table],[regionstartkey],[regionid])

Values

info:regioninfo(serializedHRegionInfoinstanceforthisregion)

info:server(server:portoftheRegionServercontainingthisregion)

info:serverstartcode(start-timeoftheRegionServerprocesscontainingthisregion)

当Region发生split时候,values中会新建两列:info:splitA和info:splitB。这两列代表两个新的子Region,列值同info:regioninfo一样,也是serializedHRegionInfoinstance,在Region完成split后,对应的旧行将被删除。

空的startkey表示HBase一张表的start或者end,hbase:meta表中如果一个Region有空的startkey,那么这个Region是对应表的第一个Region,如果startkey和endkey都为空,那么这个Region是表的唯一Region。

Region的划分使用范围分区策略,按照rowkey划分。

数据写入

客户端将用户的写入请求进行预处理,并根据集群元数据定位写入数据所在的RegionServer,将请求发送给对应的RegionServer。

RegionServer接收到写入请求之后,先写WAL,再写入对应Region列簇的MemStore。

当Region中MemStore容量超过一定阈值,系统会异步执行flush操作,将内存中的数据写入HFile。

数据读取

读取有get和scan两种API,get通常根据给定rowkey查找一行记录,scan通常根据给定的startkey和stopkey查找多行满足条件的记录。技术实现上,get是特殊的scan,scan的条数为1。scan并没有设计为一次RPC请求,因为一次scan操作的扫描结果可能数据量非常大。HBase会根据设置条件将一次大的scan拆分为多个RPC请求,每个RPC请求称为一次next请求,每次只返回规定数量的结果。

1、client根据集群元数据定位查询数据所在的RegionServer,将请求发送给对应的RegionServer。

2、对包含用户查询数据的Region的HFile进行过滤,过滤方法主要有三种:

根据KeyRange过滤:因为HFile中所有KeyValue数据都是有序的,所以如果待检索row范围[startrow,stoprow]与文件起始key范围[firstkey,lastkey]没有交集,就可以过滤掉该HFIle。

根据TimeRange过滤:HFile中元数据有一个关于该File的TimeRange属性[miniTimestamp,maxTimestamp],如果待检索的TimeRange与该文件时间范围没有交集,就可以过滤掉该HFile;另外,如果该文件所有数据已经过期,也可以过滤淘汰。

根据布隆过滤器进行过滤:根据待检索的rowkey获取对应的BloomBlock并加载到内存(通常情况下,热点BloomBlock常驻内存),使用布隆过滤器中的数据确定待检索rowkey是否一定不存在于该HFile。

3、从剩余HFile中读取待查找key:首先根据HFile中的索引定位目标block,然后看BlockCache中是否存在,不存在则从HDFS中seek读取,之后在block中顺序查找指定key。由于不同HFile文件之间的数据是无序的,因此需要归并排序,实际上MemStore使用MemStoreScanner读取数据,HFile使用StoreFileScanner读取数据,最后KeyValueScanner将使用MemStoreScanner和多个StoreFileScanner来构建最小堆,保证所有数据有序。

hbase的核心数据结构是hbase的核心数据结构为LSM树。

SM树分为内存部分和磁盘部分。

内存部分是一个维护有序数据集合的数据结构。一般来讲,内存数据结构可以选择平衡二叉树、红黑树、跳跃表(SkipList)等维护有序集的数据结构,由于考虑并发性能,HBase选择了表现更优秀的跳跃表。

磁盘部分是由一个个独立的文件组成,每一个文件又是由一个个数据块组成。对于数据存储在磁盘上的数据库系统来说,磁盘寻道以及数据读取都是非常耗时的操作(简称IO耗时)。为了避免不必要的IO耗时,可以在磁盘中存储一些额外的二进制数据,这些数据用来判断对于给定的key是否有可能存储在这个数据块中,这个数据结构称为布隆过滤器(BloomFilter)。

hbase通过什么快速判断用户数据不存在hbase通过BloomFiter快速判断用户数据不存在。根据查询相关公开信息显示,布隆过滤器BloomFilter精确判断数据不存在,如果判断数据存在可能有误差用来优化一些随机读取的场景。

HBase是什么呢,都有哪些特点呢Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待

那Hbase有什么特性呢?如下:

强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合

自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配

自动的故障转移

Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接

丰富的“简洁,高效”API,Thrift/RESTAPI,JavaAPI

块缓存,布隆过滤器,可以高效的列查询优化

操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标

什么时候用Hbase?

Hbase不适合解决所有的问题:

首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态

其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。

最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。

Hbase在单机环境也能运行,但是请在开发环境的时候使用。

内部应用

存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。

存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息

存储业务附件:UDFS系统存储图像,视频,文档等附件信息

不过在公司使用的

股市指数图怎么看

时候,一般不使用原生的HbaseAPI,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。

HFile

HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件。索引的大小(keys的大小,数据量的大小)影响block的大小,在大数据集的情况下,block的大小设置为每个RegionServer1GB也是常见的。

探讨数据库的数据存储方式,其实就是探讨数据如何在磁盘上进行有效的组织。因为我们通常以如何高效读取和消费数据为目的,而不是数据存储本身。

Hfile生成方式

起初,HFile中并没有任何Block,数据还存在于MemStore中。

Flush发生时,创建HFileWriter,第一个空的DataBlock出现,初始化后的DataBlock中为Header部分预留了空间,Header部分用来存放一个DataBlock的元数据信息。

而后,位于MemStore中的KeyValues被一个个append到位于内存中的第一个DataBlock中:

注:如果配置了DataBlockEncoding,则会在AppendKeyValue的时候进行同步编码,编码后的数据不再是单纯的Ke

mate10

yValue模式。DataBlockEncoding是HBase为了降低KeyValue结构性膨胀而提供的内部编码机制。

关于本次布隆过滤器 hbase和布隆过滤器hbase的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。

版权所属:西柚理财

文章作者:spring

本文地址:http://caijing.cj8822.cn/3803.html

分享本文
上一篇
市级民生银行行长级别市级民生银行行长级别是
下一篇
希元什么意思希源什么意思
猜你喜欢
平板没法下载微信怎么办平板没法下载微信怎么办呢
平板没法下载微信怎么办平板没法下载微信怎么办呢
招商银行辞职压力大招商银行辞职的多吗.
招商银行辞职压力大招商银行辞职的多吗.
平板下载不了qq怎么办苹果平板下载不了qq怎么办苹果版
平板下载不了qq怎么办苹果平板下载不了qq怎么办苹果版
平安银行黄金定存平安银行黄金定存期限
平安银行黄金定存平安银行黄金定存期限
平板下载不了微信怎么办呢平板下载不了微信怎么办
平板下载不了微信怎么办呢平板下载不了微信怎么办
平板版本太低下载不了微信怎么办呀平板版本太低下载不了微信怎么办呀苹果
平板版本太低下载不了微信怎么办呀平板版本太低下载不了微信怎么办呀苹果
抖音基地发货的玉石都是真的吗抖音基地发货的玉石都是真的吗吗
抖音基地发货的玉石都是真的吗抖音基地发货的玉石都是真的吗吗
招商银行密码招商银行密码格式.
招商银行密码招商银行密码格式.
热门文章
  • 全域智慧 引领未来!瑞驰汽车携多款全域智慧新品亮相2025世界智博会

    全域智慧 引领未来!瑞驰汽车携多款全域智慧新品亮相2025世界智博会

    2025-09-05 5489
  • 10来万电混SUV怎么选,蓝电E5为何会比启辰大V DD-i更划算呢

    10来万电混SUV怎么选,蓝电E5为何会比启辰大V DD-i更划算呢

    2023-10-01 704
  • 老百姓的致富车,风光380现金直接补3千元,载人拉货样样都行!

    老百姓的致富车,风光380现金直接补3千元,载人拉货样样都行!

    2023-10-18 699
  • 更省油的郊游神器,可选7座、可对外放电,比哈弗大狗更实用!

    更省油的郊游神器,可选7座、可对外放电,比哈弗大狗更实用!

    2023-09-28 699
  • 拉货拉人一车多用 购车还有6千现金直补 东风小康EC36II每公里只需7分钱!

    拉货拉人一车多用 购车还有6千现金直补 东风小康EC36II每公里只需7分钱!

    2023-10-23 698
  • 直补2千,东风小康D71动力强、载重大,长安跨越王X3怎么比

    直补2千,东风小康D71动力强、载重大,长安跨越王X3怎么比

    2023-10-17 698
  • 真心懂国民的电混SUV - 蓝电E5遇上启辰大V DDi上演降维打击!

    真心懂国民的电混SUV - 蓝电E5遇上启辰大V DDi上演降维打击!

    2023-10-01 697
  • 比五菱宏光V更值的致富神器,风光380方方面面都不错还能便宜1100元呢!

    比五菱宏光V更值的致富神器,风光380方方面面都不错还能便宜1100元呢!

    2023-10-23 696
网站分类
  • 金融理财
  • 财经知识
  • 理财课堂
  • 新闻热点
  • 常见问题
云标签
  • 关于我们
  • 联系我们
  • 广告合作
Copyright © 西柚理财 Design by 西柚理财
备案号 版权归西柚理财所有