CN114443629A - 一种集群布隆过滤器数据去重方法、终端设备及存储介质 - Google Patents
一种集群布隆过滤器数据去重方法、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114443629A CN114443629A CN202111591763.4A CN202111591763A CN114443629A CN 114443629 A CN114443629 A CN 114443629A CN 202111591763 A CN202111591763 A CN 202111591763A CN 114443629 A CN114443629 A CN 114443629A
- Authority
- CN
- China
- Prior art keywords
- data
- cluster
- bloom filter
- filter
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种集群布隆过滤器数据去重方法、终端设备及存储介质,该方法中包括:接收数据记录并写入消息队列;计算数据记录对应的排重键值;计算该消息记录对应的存储索引号i;将集群布隆过滤器中第i个过滤器槽中存储该消息记录对应的位向量,并初始化为0;通过k个散列函数分别对该消息记录对应的排重键值进行运算,根据k个运算结果将该消息记录对应的位向量中对应位置元素的值置1;对于待查找数据记录,根据其在集群布隆过滤器中对应过滤器槽中存储的位向量中对应元素的值是否为1来判断是否重复。本发明解决了实时数据去重负载过大难题。
Description
技术领域
本发明涉及数据去重领域,尤其涉及一种集群布隆过滤器数据去重方法、终端设备及存储介质。
背景技术
数据去重是数据中心中进行数据治理必不可少的部分,通常数据中心会存在大量的冗余数据,有效的数据去重能指数级的减少数据中心的冗余数据、减轻数据存储容量压力。数据去重通常分为在线去重和离线去重,在线去重也叫实时去重,是在进行数据接入和处理的过程中以及数据入主库前就将重复的数据进行过滤,实时去重对入库性能会有较大的影响,尤其是数据总量比较大的情况下;离线去重通常是在数据入主库或者中间库后对全局数据进行分析计算、删除重复数据或者重入去重后的数据,离线去重需要消耗较大的CPU和内存资源并需要较大的存储空间存储去重的过程中的中间数据,一般情况下会采用集群处理。
通常情况下实时去重需要依赖但不限于现有流数据处理框架如spark、storm、flink等,在流处理框架的某一环节加入去重步骤,例如flink框架下通常会开发基于filter算子的自定义去重算子进行数据去重,当流数据进入去重算子后会根据去重规则进行数据过滤。通常在进行流数据处理时会给每条数据加上唯一标识、这个标识用于标记该条记录的内容,一般是将接入的所有字段值叠加计算hash值获得、目前常用的一些去重算法如下:
1、基于MongoDb存储排重键
MongoDb是分布式的文档数据库,通常读写性能到且数据分部署存储能满足较大的数据容量,将数据唯一标识作为排重键直接存入MongoDb、过滤规则为数据每次流入去重算子后根据唯一标识查询MongoDb库表看该记录是否存在,如果存在则认为该条记录已经存在进行排重,如果不存在则存储唯一标识到MongoDb并将数据放行流入下一环节。
基于MongoDb的排重方法优点是没有排重键的存储容量压力、MongoDb存储百万去重键完全能满足;缺点也是很明显,每条数据流入去重节点后都需要查询MongoDb进行读取,如果排重键不存在还要进行写入操作,会严重影响数据处理性能和入库时间。
2、基于Redis存储排重键
Redis是常用的内存数据库,单节点QPS能达到百万级。将排重键作为Redis的key值直接存入并在去重节点直接对Redis进行读写会有很高的处理性能,对入库性能和入库时间基本没有影响。但是Redis由于是基于内存存储、数据量达到百亿级别情况下需要的内存容量已经超过2000G,如果是考虑Redis集群也需要数十台机器专门用于排重键的存储、资源浪费严重且可行性差。
3、基于布隆过滤器进行数据排重
布隆过滤器(Bloom Filter,BF)起源于1970年,是一种高时空效率的数据结构,由一个一定长度(比如128bit位)的二进制向量和一组相互独立的哈希函数组成。布隆过滤器可以用来检查一个元素是否出现在一个数据集合中,具有很好的过滤效果。基于布隆过滤器的排重可以数百倍的压缩排重键的存储空间,从而可以实现2G多的容量能存储亿级的排重数据。
布隆过滤器的实现已经有很多版本,例如基于Redis的布隆过滤器、Guava包的java布隆过滤器,但是这些过滤器都有一个缺点,单个布隆过滤器有存储上限限制,例如guava的过滤器最大容量限制为千万级内,Redis的布隆过滤器最大限制容量在亿万级别内,很难满足数据中心百亿甚至千亿规模的数据去重需求。
发明内容
为了解决上述问题,本发明提出了一种集群布隆过滤器数据去重方法、终端设备及存储介质。
具体方案如下:
一种集群布隆过滤器数据去重方法,包括以下步骤:
S1:接收数据记录并写入消息队列;
S2:计算数据记录对应的排重键值;
S3:根据每条消息记录的排重键值t,计算该消息记录对应的存储索引号i:
i=CRC16(t)%(n*m)
其中,CRC16表示CRC16运算,%表示求余数,n表示单个布隆过滤器的个数,m表示每个布隆过滤器包含的卡槽数;
S4:在由n个单个布隆过滤器组成的集群布隆过滤器的n*m个过滤器槽中的第i个过滤器槽中存储该消息记录对应的位向量,并初始化设定位向量中各元素的值均为0;
S5:通过k个散列函数分别对该消息记录对应的排重键值进行运算,根据k个运算结果将该消息记录对应的位向量中对应位置元素的值置1;
S6:对于待查找数据记录,通过步骤S2-S3得到该查找数据记录对应的位向量在集群布隆过滤器的存储位置i,通过步骤S5中方法得到该查找数据记录对应的位向量中应置1的元素的值是否为1,如果是,则判定该待查找数据记录重复,否则,判定该待查找数据记录不重复。
进一步的,数据记录对应的排重键值的计算方法为:将数据记录中所有字段的值依序拼接后,对拼接后的值进行哈希运算,将哈希运算的结果作为排重键值。
进一步的,哈希运算采用MD5运算。
进一步的,所述方法的实现过程集成到flink框架中,选择flink的filter算子作为排重算子,将集群布隆过滤器集成到filter算子中,具体集成步骤如下:
S101:排重算子代码继承filter算子;
S102:将数据记录逐条通过source算子解析进入flink程序;
S103:继承filter的排重算子从前一个算子拉取数据;
S104:从拉取的数据中提取排重键值;
S105:使用排重键值作为参数调用集群布隆过滤器查询改排重键值是否存在,如果存在则过滤该条数据记录,如果不存在则调用集群布隆过滤器插入方法存储排重键值并放行数据记录到下个节点。
进一步的,集群布隆过滤器能够进行扩容和缩容,在进行扩容或缩容时对数据的迁移过程中,如果遇到请求情况,使用ask重定向策略进行响应。
一种集群布隆过滤器数据去重终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。
本发明采用如上技术方案,可有效指导解决大数据中心、数据中台、数据湖、数据仓库等场景下的实时数据去重负载过大难题,在提高数据入库性能的同时保证数据去重效果,压缩数据中心存储规模。
附图说明
图1所示为本发明实施例一的流程图。
图2所示为该实施例中集群布隆过滤器示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例提供了一种集群布隆过滤器数据去重方法,如图1所示,所述方法包括以下步骤:
S1:接收数据记录并写入消息队列。
S2:计算数据记录对应的排重键值。
排重键值每条消息记录对应的唯一标记值,设S={d1,d2,…,dn}为数据流中的一条数据记录,该条数据记录共有n个字段,对该条数据记录记录S中的每个字段的值进行连接操作,使用&代表字符串拼接符号,连接后对连接的值进行哈希运算得到排重键值,该实施例中使用md5作为哈希函数,计算后得到排重键值为t=MD5(d1&d2&…&dn)。
S3:根据每条消息记录的排重键值t,计算该消息记录对应的存储索引号i:
i=CRC16(t)%(n*m)
其中,CRC16表示CRC16运算,%表示求余数,n表示单个布隆过滤器的个数,m表示每个布隆过滤器包含的卡槽数。
由于现有算法中采用的单个布隆过滤器算法存在存储上限,该实施例中在原有布隆过滤器的基础上对布隆过滤器进行扩展支持过滤器集群,以便适应大容量的数据排重。单个布隆过滤器通过一个元素被加入元素集合时,通过k个散列函数将这个元素映射成一个位数组中的k个点(特征),将k个点的值置为1,检索时这些点如果为1,则被检元素可能存在,如果这些点当中有任意的点为0,则被检元素一定不存在。集群过滤器的策略是先加入n个单个布隆过滤器作为集群,n的值需要根据排重数据容量进行预估,每个布隆过滤器节点虚拟出多个过滤器槽,假设每个节点有m个卡槽,则集群布隆过滤器的过滤器槽总数为n*m。
S4:在由n个单个布隆过滤器组成的集群布隆过滤器的n*m个过滤器槽中的第i个过滤器槽中存储该消息记录对应的位向量,并初始化设定位向量中各元素的值均为0。
该实施例中设定位向量长度为l,即位向量V={b1,b2,…,bl}。
S5:通过k个散列函数分别对该消息记录对应的排重键值进行运算,根据k个运算结果将该消息记录对应的位向量中对应位置元素的值置1。
散列函数为具有均匀分布特性的散列函数,通过k个散列函数的运算结果得到k个随机数h1,h2,…,hk,使位向量V得相应位置的元素{b1,b2,…,bl}置1。
S6:对于待查找数据记录,通过步骤S2-S3得到该查找数据记录对应的在位向量V的存储位置i,通过步骤S5中方法得到该查找数据记录对应的k个随机数,检查该待查找数据记录对应的k个随机数在位向量V中的对应位置元素的值是否均为1,如果是,则判定该待查找数据记录重复,否则,判定该待查找数据记录不重复。
该实施例中将步骤S1-S6中方法的实现过程集成到flink框架中了,选择flink的filter算子作为排重算子,将集群布隆过滤器集成到filter算子中,具体集成步骤如下:
S101:排重算子代码继承filter算子;
S102:将数据记录逐条通过source算子解析进入flink程序;
S103:继承filter的排重算子从前一个算子拉取数据;
S104:从拉取的数据中提取排重键值;
S105:使用排重键值作为参数调用集群布隆过滤器查询改排重键值是否存在,如果存在则过滤该条数据记录,如果不存在则调用集群布隆过滤器插入方法存储排重键值并放行数据记录到下个节点。
本实施例中使用虚拟卡槽技术作为集群布隆过滤器的具体实现,如图2所示,虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有数据映射到一个固定范围的整数集合中,这个整数定义为槽(slot),而且这个槽的个数一般远远的大于节点数。使用虚拟卡槽技术后即使有一台机器也可以使用集群布隆过滤器。
在对集群进行扩容和缩容时,需要对槽及槽中数据进行迁移,由于槽数据是均匀分布,可以批量对数据进行迁移,迁移过程中如果遇到请求情况则使用ask重定向策略进行响应。
本实施例的关键技术点为在使用布隆过滤器进行大容量数据实时排重时(通常为百亿级以上)由于单个布隆过滤器容量限制难以负载大容量数据,故提出一种基于虚拟槽技术的集群布隆过滤器实现方案解决大容量情况下不能使用布隆过滤器进行实时排重的问题。此外本实施例还提供了具体的系统实施方案和集群容量扩容缩容方案。本实施例方法可有效指导解决大数据中心、数据中台、数据湖、数据仓库等场景下的实时数据去重负载过大难题,在提高数据入库性能的同时保证数据去重效果,压缩数据中心存储规模。
实施例二:
本发明还提供一种集群布隆过滤器数据去重终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述集群布隆过滤器数据去重终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述集群布隆过滤器数据去重终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述集群布隆过滤器数据去重终端设备的组成结构仅仅是集群布隆过滤器数据去重终端设备的示例,并不构成对集群布隆过滤器数据去重终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述集群布隆过滤器数据去重终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述集群布隆过滤器数据去重终端设备的控制中心,利用各种接口和线路连接整个集群布隆过滤器数据去重终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述集群布隆过滤器数据去重终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述集群布隆过滤器数据去重终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)以及软件分发介质等。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (7)
1.一种集群布隆过滤器数据去重方法,其特征在于,包括以下步骤:
S1:接收数据记录并写入消息队列;
S2:计算数据记录对应的排重键值;
S3:根据每条消息记录的排重键值t,计算该消息记录对应的存储索引号i:
i=CRC16(t)%(n*m)
其中,CRC16表示CRC16运算,%表示求余数,n表示单个布隆过滤器的个数,m表示每个布隆过滤器包含的卡槽数;
S4:在由n个单个布隆过滤器组成的集群布隆过滤器的n*m个过滤器槽中的第i个过滤器槽中存储该消息记录对应的位向量,并初始化设定位向量中各元素的值均为0;
S5:通过k个散列函数分别对该消息记录对应的排重键值进行运算,根据k个运算结果将该消息记录对应的位向量中对应位置元素的值置1;
S6:对于待查找数据记录,通过步骤S2-S3得到该查找数据记录对应的位向量在集群布隆过滤器的存储位置i,通过步骤S5中方法得到该查找数据记录对应的位向量中应置1的元素的值是否为1,如果是,则判定该待查找数据记录重复,否则,判定该待查找数据记录不重复。
2.根据权利要求1所述的集群布隆过滤器数据去重方法,其特征在于:数据记录对应的排重键值的计算方法为:将数据记录中所有字段的值依序拼接后,对拼接后的值进行哈希运算,将哈希运算的结果作为排重键值。
3.根据权利要求2所述的集群布隆过滤器数据去重方法,其特征在于:哈希运算采用MD5运算。
4.根据权利要求1所述的集群布隆过滤器数据去重方法,其特征在于:所述方法的实现过程集成到flink框架中,选择flink的filter算子作为排重算子,将集群布隆过滤器集成到filter算子中,具体集成步骤如下:
S101:排重算子代码继承filter算子;
S102:将数据记录逐条通过source算子解析进入flink程序;
S103:继承filter的排重算子从前一个算子拉取数据;
S104:从拉取的数据中提取排重键值;
S105:使用排重键值作为参数调用集群布隆过滤器查询改排重键值是否存在,如果存在则过滤该条数据记录,如果不存在则调用集群布隆过滤器插入方法存储排重键值并放行数据记录到下个节点。
5.根据权利要求1所述的集群布隆过滤器数据去重方法,其特征在于:集群布隆过滤器能够进行扩容和缩容,在进行扩容或缩容时对数据的迁移过程中,如果遇到请求情况,使用ask重定向策略进行响应。
6.一种集群布隆过滤器数据去重终端设备,其特征在于:包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~5中任一所述方法的步骤。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1~5中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591763.4A CN114443629A (zh) | 2021-12-23 | 2021-12-23 | 一种集群布隆过滤器数据去重方法、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591763.4A CN114443629A (zh) | 2021-12-23 | 2021-12-23 | 一种集群布隆过滤器数据去重方法、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443629A true CN114443629A (zh) | 2022-05-06 |
Family
ID=81363979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111591763.4A Pending CN114443629A (zh) | 2021-12-23 | 2021-12-23 | 一种集群布隆过滤器数据去重方法、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443629A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454983A (zh) * | 2022-09-13 | 2022-12-09 | 浪潮卓数大数据产业发展有限公司 | 一种基于布隆过滤器的海量Hbase数据去重方法 |
-
2021
- 2021-12-23 CN CN202111591763.4A patent/CN114443629A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454983A (zh) * | 2022-09-13 | 2022-12-09 | 浪潮卓数大数据产业发展有限公司 | 一种基于布隆过滤器的海量Hbase数据去重方法 |
CN115454983B (zh) * | 2022-09-13 | 2023-07-14 | 浪潮卓数大数据产业发展有限公司 | 一种基于布隆过滤器的海量Hbase数据去重方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068455B2 (en) | Mapper tree with super leaf nodes | |
CN109918018B (zh) | 一种数据存储方法及存储设备 | |
CN106201659B (zh) | 一种虚拟机热迁移的方法及宿主机 | |
JP2013541083A (ja) | 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム及び方法 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
CN103020255A (zh) | 分级存储方法和装置 | |
CN112099725A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112463058B (zh) | 一种碎片数据整理方法、装置及存储节点 | |
CN103150260A (zh) | 重复数据删除方法和装置 | |
CN111209256A (zh) | 一种文件监控方法、装置、电子设备及存储介质 | |
CN114503076A (zh) | 增量数据确定方法、确定装置、服务器及终端设备 | |
CN112912870A (zh) | 租户标识符的转换 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN114443629A (zh) | 一种集群布隆过滤器数据去重方法、终端设备及存储介质 | |
CN116521641A (zh) | 基于数据湖的数据读写方法、数据读写装置以及存储介质 | |
CN114844638A (zh) | 一种基于布谷鸟过滤器的大数据量密钥的去重方法及系统 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN110019347B (zh) | 一种区块链的数据处理方法、装置及终端设备 | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN109947712A (zh) | 计算框架内自动合并文件的方法、系统、设备及介质 | |
CN112000971B (zh) | 一种文件权限记录方法、系统及相关装置 | |
CN109710454A (zh) | 一种云主机快照方法及装置 | |
US20230222165A1 (en) | Object storage-based indexing systems and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |