CN110362600A - 一种乱序数据流分布式聚合查询方法、系统及介质 - Google Patents
一种乱序数据流分布式聚合查询方法、系统及介质 Download PDFInfo
- Publication number
- CN110362600A CN110362600A CN201910661427.9A CN201910661427A CN110362600A CN 110362600 A CN110362600 A CN 110362600A CN 201910661427 A CN201910661427 A CN 201910661427A CN 110362600 A CN110362600 A CN 110362600A
- Authority
- CN
- China
- Prior art keywords
- query
- tuple
- data flow
- stream
- window
- 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.)
- Granted
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机领域的流数据查询处理技术,具体涉及一种乱序数据流分布式聚合查询方法、系统及介质,为了解决现有乱序数据流聚合查询不能在降低查询处理延迟的同时保障聚合查询结果的最终正确性的问题,本发明一方面基于用户给定的结果质量限制来自适应地优化流处理模块所用的缓冲区大小,尽可能降低流处理模块的查询处理延迟,另一方面基于备份于分布式数据存储系统的历史流数据并由批处理模块以批处理的方式实现对晚到流元组的查询处理,从而保障聚合查询结果的最终正确性。基于真实的乱序数据流数据集测试分析表明:本发明比目前最好的基于缓存的乱序数据流处理技术在平均查询处理时延、查询结果精度和系统可扩展性方面均具有显著优势。
Description
技术领域
本发明涉及计算机领域的流数据查询处理技术,具体涉及一种乱序数据流分布式聚合查询方法、系统及介质。
背景技术
随着数据采集技术和网络通讯技术的不断发展和成熟应用,许多行业每时每刻都在产生大量流数据,因而如何对汹涌而至的流数据进行及时查询处理是当下亟待解决的研究问题,受到学术界和工业界的广泛关注。数据流上基于滑动窗口的连续聚合查询(后文简称为聚合查询)返回数据流上一定时间窗口内的流元组的聚合统计信息,支持包括事件跟踪、金融分析和网络监控在内的许多重要应用。然而,近年来分布式并行计算的引入在有效提高数据流查询处理效率的同时增加了查询处理系统的复杂性,导致数据流乱序现象越发突出,极大影响了数据流聚合查询结果的精度。
数据流乱序问题是数据流查询处理需要解决的首要基础性问题,国内外已有不少研究成果。按处理机理的不同,现有乱序数据流处理技术主要分为基于缓存的处理技术、基于标点的处理技术、基于推测执行的处理技术、近似处理技术和混合处理技术,并以基于缓存的处理技术为主流应用技术。基于缓存的处理技术通过构建缓冲区等待晚到的流元组,当缓冲区满载后基于流元组的时间戳对缓冲区内的流元组进行重排序,继而将有序的数据流片段发送至后端查询处理单元完成查询处理。K-slack技术是基于缓存的处理技术的典型代表,其中参数K是和缓冲区大小有关的松弛因子。具体而言,K-slack技术维护一个大小为K的缓冲区用于缓存已到达的流元组,缓冲区内的流元组在等待至多K个时间单位后会按其时间戳顺序被释放提交给查询处理单元完成查询处理。K-slack技术的设计难点在于如何确定K的大小,因为K的大小直接决定元组在缓冲区内的等待时间,从而影响对乱序数据流的查询处理效率。具体而言,K设置得越大,元组在缓冲区内的等待时间就越长,则有可能等到更多的晚到流元组一起进入下阶段的查询处理,从而提升查询结果质量。然而,等待时间的延长同时也会提高查询处理代价、增大查询处理延迟以及降低查询处理吞吐率。因而,不少相关研究工作专门针对K值的设定进行了研究和优化,以MP-K-slack技术和AQ-K-slack技术为代表。其中MP-K-slack技术基于流元组延迟的动态变化来不断调整K值,即用不断捕获的数据流上流元组的最大延迟值来更新K。可见,随着系统捕获的流元组的最大延迟值的不断增大,MP-K-slack技术设定的缓冲区也将不断变大,流元组在缓冲区内的等待时间也将不断增长,导致查询处理代价和查询处理延迟的上升以及查询处理吞吐率的下降。其后提出的AQ-K-slack技术则分别针对聚合查询和多流连接查询优化了K值的设定策略。特别地,在处理聚合查询时,AQ-K-slack技术以控制乱序数据流上聚合查询的结果精度为目标,实现了在保障一定结果精度的前提下,基于对较近历史流数据的延迟的统计信息动态优化K值,尽可能降低缓冲区大小。AQ-K-slack技术能够根据数据流上流元组延迟的动态变化自适应的增减K值,从而权衡了聚合查询的结果精度和查询处理延迟这两个重要指标,比MP-K-slack技术更具优越性。然而,由于内存大小的限制,基于缓存的处理策略只能忽略对延迟较大的流元组的查询处理,因而无论是MP-K-slack技术还是AQ-K-slack技术均不能保障聚合查询结果的最终正确性。可见,现有乱序数据流的查询处理技术通过牺牲查询处理结果质量换取了查询处理延迟的降低,从而保障对乱序数据流查询处理的及时性。然而,以用户点击数统计为代表的许多数据流查询分析应用,既要求系统能够对快速到达的乱序数据流进行及时的查询处理,又要求系统能够最终提供精确的查询结果,便于精准计费。因此,如何解决现有的乱序数据流聚合查询处理技术不能在降低查询处理延迟的同时,保障聚合查询结果的最终正确性这个局限性问题,已经成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种乱序数据流分布式聚合查询方法、系统及介质,本发明一方面基于用户给定的结果质量限制自适应地优化流处理模块所用的缓冲区大小,尽可能降低流处理的查询处理延迟,另一方面基于备份于分布式数据存储系统的历史流数据并以批处理的方式实现对晚到流元组的查询处理,从而保障聚合查询结果的最终正确性,本发明比目前基于缓存的乱序数据流处理技术在平均查询处理时延、查询结果精度和系统可扩展性方面均具有显著优势。
为了解决上述技术问题,本发明采用的技术方案为:
一种乱序数据流分布式聚合查询方法,基于数据流分布式处理平台Apache Storm实现,所述数据流分布式处理平台Apache Storm的拓扑结构包括Kafka Spout及其下游多个并行执行的查询处理任务执行实例Squery Bolt Task构成的流处理模块、分布式数据存储模块以及批处理模块,所述乱序数据流分布式聚合查询方法的实施步骤包括:
1)向消息队列Kafka Spout输入流元组;
2)通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例Squery Bolt Task输入流元组,并同时将所有流元组存入分布式数据存储模块中的历史流数据表中,且通过批处理模块针对存入分布式数据存储模块中的历史流数据表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;
3)每个查询处理任务执行实例Squery Bolt Task基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*,并将最优值K*反馈给消息队列Kafka Spout;
4)消息队列Kafka Spout判断收到的元组时间戳ts∈[tmax-K*-|W|,tmax]是否成立,其中,K*为Squery Bolt Task上缓冲区大小的最优值,|W|为数据流聚合查询所涉及的滑动窗口大小,tmax为到达的流元组的最大时间戳;如果不成立则将该流元组信息存入分布式数据存储模块中的晚到流元组信息表中,且通过批处理模块针对存入分布式数据存储模块中的晚到流元组信息表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;否则,将该元组发送给流处理模块的一个查询处理任务执行实例Squery Bolt Task执行聚合查询处理,输出流处理模块的查询处理结果,将查询处理结果存入分布式数据存储模块中的查询结果表中。
优选地,步骤2)中通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例Squery Bolt Task输入流元组之前还包括通过消息队列Kafka Spout统计流元组的到达率N的步骤。
优选地,步骤3)中基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*的详细步骤包括:
3.1)输入参数,包括用户聚合查询函数类型f(x)、用户给定误差阈值(εthr,δ)、流元组的到达率N、调整因子α、PD控制器的参数Kp和Kd;
3.2)根据用户聚合查询函数类型f(x)对应的“误差-窗口覆盖阈值”模型,根据流元组的到达率N和用户给定误差阈值(εthr,δ)、调整因子α、PD控制器的参数Kp和Kd计算满足用户给定误差阈值(εthr,δ)下的滑动窗口的窗口覆盖率阈值λthr;
3.3)计算系统运行时每个滑动窗口上的实际窗口覆盖率并记为序列{...,λi,...},其中λi表示第i个滑动窗口的实际窗口覆盖率值,根据PD控制理论结合满足用户给定误差阈值(εthr,δ)时的窗口覆盖率阈值λthr计算调整因子α的调整量Δα,将调整因子α加上调整量Δα得到下阶段调整因子的优化值α*;
3.4)计算缓冲区大小的基础值k,并结合所得到下阶段调整因子的优化值α*计算K*=α*k得到缓冲区大小的最优值K*。
优选地,步骤3.2)中计算满足用户给定误差阈值(εthr,δ)的窗口覆盖率阈值λthr具体是指计算满足用户给定误差阈值(εthr,δ)的滑动窗口内需要到达的流元组的比率作为窗口覆盖率阈值λthr,且窗口覆盖率阈值λthr满足λthr∈[0,1]。
优选地,步骤3.3)中计算系统运行时每个滑动窗口上的实际窗口覆盖率的函数表达式为λi=nrcv/(nrcv+nlate),其中λi表示第i个滑动窗口的实际窗口覆盖率值,nrcv表示窗口闭合时Task所收到的窗口内流元组的个数,nlate则表示在窗口闭合后一段周期内才到达Task的本应落在该窗口内的流元组的个数。
优选地,步骤3.3)中根据PD控制理论计算本阶段调整因子α的调整量Δα的详细步骤包括:计算第i-1个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i-1),计算第i个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i),根据函数表达式Δα=Kp*err(i)+Kd*(err(i)-err(i-1))计算本阶段调整因子α的调整量Δα,其中Kp和Kd为PD控制器的参数。
此外,本发明还提供一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台Apache Storm实现的计算机系统,该计算机系统被编程或配置以执行所述乱序数据流分布式聚合查询方法的步骤。
此外,本发明还提供一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台Apache Storm实现的计算机系统,该计算机系统的存储介质上存储有被编程或配置以执行所述乱序数据流分布式聚合查询方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述乱序数据流分布式聚合查询方法的计算机程序。
和现有技术相比,本发明具有下述优点:为了解决现有的乱序数据流聚合查询处理技术不能在降低查询处理延迟的同时保障聚合查询结果的最终正确性这个局限性问题,本发明一方面基于用户给定的结果质量限制自适应地优化流处理模块所用的缓冲区大小,尽可能降低流处理的查询处理延迟,另一方面基于备份于分布式数据存储系统的历史流数据并以批处理的方式实现对晚到流元组的查询处理,从而保障聚合查询结果的最终正确性。基于真实的乱序数据流数据集测试分析表明:本发明比目前最好的基于缓存的乱序数据流处理技术在平均查询处理时延、查询结果精度和系统可扩展性方面均具有显著优势。
附图说明
图1为本发明实施例方法中数据流分布式处理平台Apache Storm的结构示意图。
图2为本发明实施例方法的基本流程示意图。
图3为本发明实施例中生成最优值K*的流程示意图。
图4为本发明实施例中数据流时间域划分的原理示意图。
图5为本发明实施例方法(HPM)和MP-K-slack技术的缓冲区大小对比。
图6为本发明实施例方法(HPM)和AQ-K-slack技术的查询处理时延比较。
图7为本发明实施例方法(HPM)和AQ-K-slack技术的累计查询结果精度对比。
图8为本发明实施例方法(HPM)在不同数据集上HPM的系统可扩展性测试。
具体实施方式
如图1所示,本实施例乱序数据流分布式聚合查询方法基于数据流分布式处理平台Apache Storm实现,数据流分布式处理平台Apache Storm包括Kafka Spout及其下游多个并行执行的查询处理任务执行实例Squery Bolt Task构成的流处理模块、分布式数据存储模块以及批处理模块。本实施例中,分布式数据存储模块基于Hbase实现,负责存储查询结果、晚到流元组信息以及历史流数据,此外也可以采用其他的分布式数据库。本实施例乱序数据流分布式聚合查询方法基于流行开源的数据流分布式处理平台Apache Storm设计与实现了分布式数据流查询处理的混合处理模型,用于在模型框架层面支持对乱序数据流聚合查询处理的及时性和查询结果最终的精确性。需要说明的是Apache Storm提供Spout和Bolt这两类分布式处理逻辑单元:其中Spout代表数据流的源头,负责生产和喷射流数据;Bolt代表消息处理者,负责处理流数据,既可执行过滤、聚合、查询等数据库操作,又能够通过将多个Bolt相连实现对数据流的逐级处理。本实施例乱序数据流分布式聚合查询方法在Apache Storm下的系统拓扑架构包括流处理模块、批处理模块和分布式数据存储模块。流处理模块包含Kafka Spout和SQuery Bolt这两个分布式处理单元。特别的,KafkaSpout实现了Kafka分布式消息队列的功能,能够将原始数据流转换成Storm下的流元组形式并喷射给下游分布式处理单元,与此同时将所有流数据备份存储至Hbase中。SQueryBolt有多个并行执行的Task,每个Task均负责完成3项任务:一是查询处理任务,即利用基于缓存的处理思想对从Kafka Bolt获取的乱序流数据执行基于滑动窗口语义的连续聚合查询处理,并将查询结果存储至Hbase中;二是晚到流元组信息的登记任务,即将那些无法被流处理模块处理的晚到流元组的时间戳信息写至Hbase中;三是缓冲区优化任务,即基于对流元组延迟信息的统计优化调整其缓冲区大小(即K值)。批处理模块则包含BQuery Bolt和Hbase Spout这两个分布式处理单元。具体而言,BQuery Bolt也拥有多个并行执行的Task,每个Task会基于一定的规则触发对晚到流元组的查询处理,并将基于晚到流元组得到的更精确查询结果写回Hbase中。Hbase Spout则负责向BQuery Bolt喷射其执行查询处理所需要的保存在Hbase中的晚到流元组信息以及处理晚到流元组所需的历史流数据信息。
鉴于现有研究工作不能很好地满足上述类型应用的实际需求,基于当下流行的开源数据流分布式处理平台Apache Storm,本实施例乱序数据流分布式聚合查询方法提出了分布式并行计算环境下基于混合处理模型(Hybrid Processing Model,HPM)的乱序数据流连续聚合查询处理技术。混合处理模型是分布式流处理模块和分布式批处理模块的混合。其中,分布式流处理模块(后文简称为流处理模块)利用基于缓存的处理思想并通过权衡聚合查询的结果精度和查询处理延迟来保障查询处理的及时性;分布式批处理模块(后文简称为批处理模块)则基于备份至分布式文件系统的历史流数据处理极其晚到的流元组,从而保障聚合查询结果的最终精准性。本实施例乱序数据流分布式聚合查询方法基于数据流分布式处理平台Apache Storm实现主要关注下述3个关键问题:1)如何在满足用户对流处理模块所提出的查询处理精度的前提下,尽可能缩减SQuery Bolt各个Task所使用的缓冲区大小(即优化其使用的K值),从而尽可能减小流处理模块的查询处理延迟;2)如何确定哪些流元组进入流处理模块执行查询处理,而明确哪些流元组需要在批处理模块进行查询处理;3)需要优化和确定批处理模块执行查询处理的触发规则。
如图2所示,本实施例乱序数据流分布式聚合查询方法的实施步骤包括:
1)向消息队列Kafka Spout输入流元组;
需要说明的是,本实施例在输入流元组的同时还输入一系列的参数,但是,这些参数也可以通过设置的方式或者向特定的位置或者数据库读取的方式获取,并不限于在输入流元组的同时进行输入的这一特定实现方式。
2)通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例Squery Bolt Task输入流元组,并同时将所有流元组存入分布式数据存储模块中的历史流数据表中,且通过批处理模块针对存入分布式数据存储模块中的历史流数据表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;
3)每个查询处理任务执行实例Squery Bolt Task基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*,并将最优值K*反馈给消息队列Kafka Spout;
4)消息队列Kafka Spout判断收到的元组时间戳ts∈[tmax-K*-|W|,tmax]是否成立,其中,K*为Squery Bolt Task上缓冲区大小的最优值,|W|为数据流聚合查询所涉及的滑动窗口大小,tmax为到达的流元组的最大时间戳;如果不成立则将该流元组信息存入分布式数据存储模块中的晚到流元组信息表中,且通过批处理模块针对存入分布式数据存储模块中的晚到流元组信息表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;否则,将该元组发送给流处理模块的一个查询处理任务执行实例Squery Bolt Task执行查询处理,输出流处理模块的查询处理结果,将查询处理结果存入分布式数据存储模块中的查询结果表中。
如图2所示,本实施例步骤2)中通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例Squery Bolt Task输入流元组之前还包括通过消息队列KafkaSpout统计流元组的到达率N的步骤。
如图3所示,本实施例步骤3)中基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*的详细步骤包括:
3.1)输入参数,包括用户聚合查询函数类型f(x)、用户给定误差阈值(εthr,δ)、流元组的到达率N、调整因子α、PD控制器的参数Kp和Kd;
3.2)根据用户聚合查询函数类型f(x)对应的“误差-窗口覆盖阈值”模型,根据流元组的到达率N、用户给定误差阈值(εthr,δ)、调整因子α、PD控制器的参数Kp和Kd计算满足用户给定误差阈值(εthr,δ)下的滑动窗口的窗口覆盖率阈值λthr;
3.3)计算系统运行时每个滑动窗口上的实际窗口覆盖率并记为序列{...,λi,...},其中λi表示第i个滑动窗口的实际窗口覆盖率值,根据PD控制理论结合满足用户给定误差阈值(εthr,δ)时的窗口覆盖率阈值λthr计算调整因子α的调整量Δα,将调整因子α加上调整量Δα得到下阶段的调整因子的优化值α*;
3.4)计算缓冲区大小的基础值k,并结合所得到下阶段调整因子的优化值α*计算K*=α*k得到缓冲区大小的最优值K*。
本实施例中,步骤3.2)中计算满足用户给定误差阈值(εthr,δ)的窗口覆盖率阈值λthr具体是指计算满足用户给定误差阈值(εthr,δ)的滑动窗口内需要到达的流元组的比率作为窗口覆盖率阈值λthr,且窗口覆盖率阈值λthr满足λthr∈[0,1]。用户给定的聚合查询结果质量要求形式为(εthr,δ),其表示因数据流乱序而导致的聚合查询结果误差ε大于等于误差阈值εthr的概率不大于阈值δ,即prob(ε≥εthr)≤δ。考虑到数据流乱序导致聚合查询存在查询结果误差的原因,在于SQuery Bolt在执行查询处理时滑动窗口内部分流元组因晚到而缺失,这类似于滑动窗口内的抽样过程,正常到达的流元组相当于被抽样算法抽到的流元组,而晚到流元组相当于没被抽样算法选中的流元组,因而可以利用统计抽样理论确定满足用户指定的结果质量要求(εthr,δ)时,滑动窗口内需要到达的流元组的比率(即窗口覆盖率阈值λthr,λthr∈[0,1])。而窗口覆盖率阈值λthr与所需的缓冲区大小是正相关关系,因而可基于λthr值来进一步确定SQuery Bolt所需的缓冲区大小。基于统计抽样理论和特定聚合查询的查询语义,可以推导出使聚合查询的结果质量达到用户给定的结果质量要求(εthr,δ)所需的窗口覆盖率阈值。例如Ji等在基于事件的分布式系统国际会议(2015:68-79)上发表的《在乱序数据流上对滑动窗口聚合的质量驱动处理》给出了聚合查询SUM的窗口覆盖率阈值的推导过程,又如Law等在国际商业智能与数据挖掘杂志(2008,3(1):99.)发表的《提高骤降负荷下数据流连续聚集和挖掘查询的准确性》给出了聚合查询AVERAGE、COUNT、MEDIAN以及QUANTILE的窗口覆盖阈值的推导依据。
本实施例中,步骤3.3)中计算系统运行时每个滑动窗口上的实际窗口覆盖率的函数表达式为λi=nrcv/(nrcv+nlate),其中λi表示第i个滑动窗口的实际窗口覆盖率,nrcv表示窗口闭合时Task所收到的窗口内流元组的个数,nlate则表示在窗口闭合后一段周期内才到达Task的本应落在该窗口内的流元组的个数。
本实施例中,步骤3.3)中根据PD控制理论计算本阶段调整因子α的调整量Δα的详细步骤包括:计算第i-1个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i-1),计算第i个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i),根据函数表达式Δα=Kp*err(i)+Kd*(err(i)-err(i-1))计算本阶段调整因子α的调整量Δα,其中Kp和Kd为PD控制器的参数。为了使缓冲区大小的调整过程更具平稳性,本实施例中基于PD控制器确定SQuery Bolt Task上所用的缓冲区大小值。PD控制器的输入参数有两类,分别是推导所得的窗口覆盖率阈值λthr以及查询处理过程中SQuery Bolt Task统计得到的每个历史滑动窗口的实际窗口覆盖率值序列,表示为{...,λi,...}。其中,SQuery Bolt Task基于公式nrcv/(nrcv+nlate)计算滑动窗口的实际窗口覆盖率值,这里nrcv表示窗口闭合时Task所收到的窗口内流元组的个数,nlate则表示在窗口闭合后一段周期内才到达Task的本应落在该窗口内的流元组的个数。此处设缓冲区大小K=αk,其中k是缓冲区大小的基础值,等于当前到达系统的所有流元组的延迟值的最大值;α是调整因子,其值由PD控制器计算得到。因此,基于PD控制器优化α在下一阶段查询处理中的优化取值即可继而确定下一阶段缓冲区的大小的优化值K*。给定基于用户给出的查询结果质量要求(εthr,δ)推导得到的窗口覆盖阈值λthr和SQuery Bolt Task计算得到每个历史滑动窗口的实际窗口覆盖率值序列{...,λi,...},则基于PD控制器理论,下一查询处理阶段中调整因子α的优化值为α*=α+Δα。
如图4所示,基于优化的缓冲区大小值K*和滑动窗口的大小|W|可以将流元组按时间域划分为3类。若用符号tmax表示到达查询处理系统的流元组的最大时间戳,则第一类流元组的时间戳落在区间(tmax-K*,tmax]中,第二类流元组的时间戳落于区间[tmax-K*-|W|,tmax-K*],第三类流元组的时间戳则小于tmax-K*-|W|。由于数据流上窗口的闭合条件为窗口的最大时间戳小于等于值tmax-K*,可见若当前到达的流元组属于第一类,则其所对应的滑动窗口还未闭合,此时应将其发送给流处理模块的SQuery Bolt并置于缓冲区内等待后续被查询处理。若当前到达的流元组属于第二类,则意味着SQuery Bolt正在对其所属的滑动窗口执行聚合查询处理,故应该将其发送给SQuery Bolt执行查询处理。若当前到达的流元组属于第三类,则说明其所对应的滑动窗口已经闭合且过期,即SQuery Bolt已删除了该滑动窗口的所有流元组,因而该流元组已无法被流处理模块进行查询处理,而由批处理模块负责后续完成对其的查询处理。
批处理模块一方面需要针对存入分布式数据存储模块中的历史流数据表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;另一方面,还需要针对存入分布式数据存储模块中的晚到流元组信息表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中。为了完成对晚到数据流元组的查询处理,保证聚合查询结果的最终正确性,本实施例中的批处理模块需要从Hbase中读取晚到流元组对应的滑动窗口内的所有历史流数据。然而,如果每收到一个晚到流元组都执行一次对Hbase的访问会降低批处理模块的查询执行效率,因为网络传输代价和异地磁盘访问的I/O代价都会影响查询执行的效率。故可以将一系列到达时间相近的晚到流元组作为一个批次来统一执行一次批查询处理。具体而言,批处理模块中的Hbase Spout会监控流处理模块中的Kafka Spout存入Hbase的晚到流元组信息,并依次计算当前Hbase中存储的所有晚到流元组中最大时间戳和最小时间戳的差值,当该差值大于某一特定时间间隔阈值Γ时,则将这些遍历过的晚到流元组打包为一个批次,并触发批处理模块中的BQuery Bolt对该批次的晚到流元组执行查询处理。
本实施例乱序数据流分布式聚合查询方法实际上是一种分布式并行计算环境下基于混合处理模型(Hybrid processing model,HPM)的乱序数据流连续聚合查询处理技术,故本实施例中将其简称为HPM,为了对本实施例乱序数据流分布式聚合查询方法(以下简称HPM)的性能进行评估,本实施例中使用的集群由3个计算节点构成,每个计算节点的配置是双核CPU、2GB内存,运行64位的Linux(Ubuntu 16.04)操作系统。参数设置方面,将HPM涉及的PD控制器的输入参数Kp和Kd的值分别设置为0.2和4;将HPM的批处理模块触发条件判定时用到的参数时间间隔阈值Γ设定为5s;将用户给定的查询结果质量要求设置为(0.05,0.05);并将聚合查询的滑动窗口大小和滑动步长分别设置为0.5s和0.1s。在查询设置方面,以连续聚合查询SUM为测试对象。由于分布式计算环境下单机聚合查询的计算量不是主要代价,因而对聚合查询SUM的实验测试结论也同样适用于解释对其他聚合查询(例如COUNT、MEDIAN、QUANTILE和AVERAGE)的处理效果。实验数据方面,使用“德国纽伦堡体育馆足球比赛数据集(RTLS)”中两条真实的乱序数据流Game 1和Game 2进行,如表1所示,与Game 1相比,Game 2拥有更高的晚到流元组个数、流元组最大延迟值、流元组平均延迟值和晚到流元组比率值,因而乱序程度更高。
表1:“德国纽伦堡体育馆足球比赛数据集”数据流乱序情况统计。
图5和图6分别比较了本实施例乱序数据流分布式聚合查询方法(HPM)和现有的MP-K-slack技术在执行乱序数据流聚合查询处理过程中的缓冲区大小变化和平均查询处理时延(即流元组从进入系统到系统最终输出查询结果之间的平均时间间隔)。由于AQ-K-slack技术和HPM一样也是基于用户给定的结果质量要求来调整缓冲区设置大小,因而此处不针对AQ-K-slack技术进行横向比较。如图5所示,由于MP-K-slack技术不断用当前得到的流元组的最大延迟值来更新缓冲区大小K,因而其缓冲区大小随时间推移不断增大,前500s的处理过程中其缓冲区大小最后维持在17s左右。而HPM由于基于用户对查询质量的要求在数据流乱序程度不高时动态调减了缓冲区的设置大小,因而其平均缓冲区大小仅为2.7s,显著低于MP-K-slack技术的缓冲区大小。由于缓冲区大小值K决定了流元组的排队等待时间,结合图5的结论易理解在图6中MP-K-slack技术的平均查询处理时延显著高于HPM的平均查询处理时延。特别的,HPM在乱序程度最高的Game 2数据流上的平均查询处理时延仅为MP-K-slack技术的20%。
图7展示了本实施例乱序数据流分布式聚合查询方法(HPM)和AQ-K-slack技术在处理乱序数据流上连续聚合查询时的累计查询结果精度随系统运行时间的变化情况。HPM和AQ-K-slack技术都可以在流处理时保障用户指定的查询结果质量(即保障查询结果精度为95%)。由图5可见,随着晚到流元组的逐步到达,本实施例乱序数据流分布式聚合查询方法(HPM)能够基于Hbase中备份的历史流数据完成对晚到流元组的查询处理,并提供最终精确的查询结果,因而其累计查询结果精度随时间推移逐渐逼近于100%。而AQ-K-slack技术为了保障查询处理的及时性,在满足结果质量要求后会放弃对部分晚到流元组的查询处理,故该技术不能保障聚合查询结果的最终正确性。
由图8可见,不论在Game 1还是Game 2数据集上,随着本实施例乱序数据流分布式聚合查询方法(HPM)中SQuery Bolt的并行执行Task数目的增大,系统查询处理的吞吐率均呈线性递增的趋势,表明HPM具有良好的系统可扩展性。
综上所述,数据流上的连续聚合查询处理是分析和挖掘数据流的重要操作。分布式并行计算是提高数据流查询处理效率的有效手段,但同时带来了突出的数据流乱序问题,导致查询处理的延迟增大、查询结果的质量降低。现有的乱序数据流分布式聚合查询处理技术不能在降低查询处理延迟的同时,保障聚合查询结果的最终精确性,因此存在局限性。本实施例乱序数据流分布式聚合查询方法(HPM)一方面该技术基于用户给定的结果质量要求自适应地调整缓冲区大小,从而尽可能降低流处理端的查询处理延迟,另一方面该技术利用分布式数据存储系统备份历史流数据,并基于批处理模块实现对极其晚到流元组的查询处理,从而保障了聚合查询结果的最终正确性。基于真实的乱序数据流数据集对本实施例乱序数据流分布式聚合查询方法(HPM)进行测试分析证实:本实施例乱序数据流分布式聚合查询方法(HPM)比目前最好的基于缓存的乱序数据流处理技术在平均查询处理时延、查询结果精度和技术的系统可扩展性方面均具有显著优势。
此外,本实施例还提供一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台Apache Storm实现的计算机系统,该计算机系统被编程或配置以执行本实施例前述所述乱序数据流分布式聚合查询方法的步骤,
此外,本实施例还提供一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台Apache Storm实现的计算机系统,该计算机系统的存储介质上存储有被编程或配置以执行本实施例前述所述乱序数据流分布式聚合查询方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述所述乱序数据流分布式聚合查询方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种乱序数据流分布式聚合查询方法,基于数据流分布式处理平台Apache Storm实现,所述数据流分布式处理平台Apache Storm的拓扑结构包括Kafka Spout及其下游多个并行执行的查询处理任务执行实例Squery Bolt Task构成的流处理模块、分布式数据存储模块以及批处理模块,其特征在于,所述乱序数据流分布式聚合查询方法的实施步骤包括:
1)向消息队列Kafka Spout输入流元组;
2)通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例SqueryBolt Task输入流元组,并同时将所有流元组存入分布式数据存储模块中的历史流数据表中,且通过批处理模块针对存入分布式数据存储模块中的历史流数据表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;
3)每个查询处理任务执行实例Squery Bolt Task基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*,并将最优值K*反馈给消息队列Kafka Spout;
4)消息队列Kafka Spout判断收到的元组时间戳ts∈[tmax-K*-|W|,tmax]是否成立,其中,K*为查询处理任务执行实例Squery Bolt Task上缓冲区大小的最优值,|W|为数据流聚合查询所涉及的滑动窗口大小,tmax为到达的流元组的最大时间戳;如果不成立则将该流元组信息存入分布式数据存储模块中的晚到流元组信息表中,且通过批处理模块针对存入分布式数据存储模块中的晚到流元组信息表中的流元组定期执行批处理查询处理,输出批处理模块的查询结果并将查询处理结果存入分布式数据存储模块中的查询结果表中;否则,将该元组发送给流处理模块的一个查询处理任务执行实例SQuery Bolt Task执行聚合查询处理,输出流处理模块的查询处理结果,将查询处理结果存入分布式数据存储模块中的查询结果表中。
2.根据权利要求1所述的乱序数据流分布式聚合查询方法,其特征在于,步骤2)中通过消息队列Kafka Spout向下游多个并行执行的查询处理任务执行实例Squery Bolt Task输入流元组之前还包括通过消息队列Kafka Spout统计流元组的到达率N的步骤。
3.根据权利要求2所述的乱序数据流分布式聚合查询方法,其特征在于,步骤3)中基于输入参数和对输入流元组的统计信息计算缓冲区大小的最优值K*的详细步骤包括:
3.1)输入参数,包括用户聚合查询函数类型f(x)、用户给定误差阈值(εthr,δ)、流元组的到达率N、调整因子α、PD控制器的参数Kp和Kd;
3.2)根据用户聚合查询函数类型f(x)对应的“误差-窗口覆盖阈值”模型,根据流元组的到达率N、用户给定误差阈值(εthr,δ)、调整因子α、PD控制器的参数Kp和Kd计算满足用户给定误差阈值(εthr,δ)下的滑动窗口的窗口覆盖率阈值λthr;
3.3)计算系统运行时每个滑动窗口上的实际窗口覆盖率并记为序列{...,λi,...},其中λi表示第i个滑动窗口的窗口覆盖率值,根据PD控制理论结合满足用户给定误差阈值(εthr,δ)时的窗口覆盖率阈值λthr计算调整因子α的调整量Δα,将调整因子α加上调整量Δα得到下阶段调整因子的优化值α*;
3.4)计算缓冲区大小的基础值k,并结合所得到下阶段调整因子的优化值α*计算K*=α*k得到缓冲区大小的最优值K*。
4.根据权利要求3所述的乱序数据流分布式聚合查询方法,其特征在于,步骤3.2)中计算满足用户给定误差阈值(εthr,δ)的窗口覆盖率阈值λthr具体是指计算满足用户给定误差阈值(εthr,δ)的滑动窗口内需要到达的流元组的比率作为窗口覆盖率阈值λthr,且窗口覆盖率阈值λthr满足λthr∈[0,1]。
5.根据权利要求3所述的乱序数据流分布式聚合查询方法,其特征在于,步骤3.3)中计算系统运行时每个滑动窗口上的实际窗口覆盖率的函数表达式为λi=nrcv/(nrcv+nlate),其中λi表示第i个滑动窗口的实际窗口覆盖率值,nrcv表示窗口闭合时Task所收到的窗口内流元组的个数,nlate表示在窗口闭合后一段周期内才到达Task的本应落在该窗口内的流元组的个数。
6.根据权利要求3所述的乱序数据流分布式聚合查询方法,其特征在于,步骤3.3)中根据PD控制理论计算本阶段调整因子α的调整量Δα的详细步骤包括:计算第i-1个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i-1),计算第i个滑动窗口的实际窗口覆盖率值相对于窗口覆盖率阈值λthr的误差,得到第i个滑动窗口的窗口覆盖率误差err(i),根据函数表达式Δα=Kp*err(i)+Kd*(err(i)-err(i-1))计算本阶段调整因子α的调整量Δα,其中Kp和Kd为PD控制器的参数。
7.一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台ApacheStorm实现的计算机系统,其特征在于,该计算机系统被编程或配置以执行权利要求1~6种任意一项所述乱序数据流分布式聚合查询方法的步骤。
8.一种乱序数据流分布式聚合查询系统,包括基于数据流分布式处理平台ApacheStorm实现的计算机系统,其特征在于,该计算机系统的存储介质上存储有被编程或配置以执行权利要求1~6种任意一项所述乱序数据流分布式聚合查询方法的计算机程序。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~6种任意一项所述乱序数据流分布式聚合查询方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910661427.9A CN110362600B (zh) | 2019-07-22 | 2019-07-22 | 一种乱序数据流分布式聚合查询方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910661427.9A CN110362600B (zh) | 2019-07-22 | 2019-07-22 | 一种乱序数据流分布式聚合查询方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110362600A true CN110362600A (zh) | 2019-10-22 |
CN110362600B CN110362600B (zh) | 2022-03-11 |
Family
ID=68220614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910661427.9A Active CN110362600B (zh) | 2019-07-22 | 2019-07-22 | 一种乱序数据流分布式聚合查询方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362600B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026784A (zh) * | 2019-11-13 | 2020-04-17 | 浙江大学 | 一种不确定数据流概率求和阈值查询方法 |
CN111369302A (zh) * | 2020-03-17 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 实时生成积分的方法、系统及计算机可读存储介质 |
CN112818039A (zh) * | 2021-02-04 | 2021-05-18 | 浙江邦盛科技有限公司 | 一种解决乱序事件和晚到数据的精准窗口处理方法 |
WO2022089199A1 (en) * | 2020-10-30 | 2022-05-05 | International Business Machines Corporation | Dynamic replacement of degrading processing elements in streaming applications |
CN114547022A (zh) * | 2022-01-28 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种数据缓存优化的方法、系统、设备和存储介质 |
CN116841753A (zh) * | 2023-08-31 | 2023-10-03 | 杭州迅杭科技有限公司 | 一种流处理和批处理的切换方法及切换装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317889B1 (en) * | 2013-12-31 | 2016-04-19 | Exelis Inc. | Parallel image processing method and system |
CN106250395A (zh) * | 2016-07-18 | 2016-12-21 | 广西大学 | 一种数据流相似性的连接方法 |
CN106997394A (zh) * | 2017-04-12 | 2017-08-01 | 成都四方伟业软件股份有限公司 | 一种数据乱序到达处理方法和系统 |
CN107193862A (zh) * | 2017-04-01 | 2017-09-22 | 国家计算机网络与信息安全管理中心 | 一种基于Spark Streaming的方差优化直方图构建方法及装置 |
-
2019
- 2019-07-22 CN CN201910661427.9A patent/CN110362600B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317889B1 (en) * | 2013-12-31 | 2016-04-19 | Exelis Inc. | Parallel image processing method and system |
CN106250395A (zh) * | 2016-07-18 | 2016-12-21 | 广西大学 | 一种数据流相似性的连接方法 |
CN107193862A (zh) * | 2017-04-01 | 2017-09-22 | 国家计算机网络与信息安全管理中心 | 一种基于Spark Streaming的方差优化直方图构建方法及装置 |
CN106997394A (zh) * | 2017-04-12 | 2017-08-01 | 成都四方伟业软件股份有限公司 | 一种数据乱序到达处理方法和系统 |
Non-Patent Citations (1)
Title |
---|
崔星灿等: "分布式流处理技术综述", 《计算机研究与发展》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026784A (zh) * | 2019-11-13 | 2020-04-17 | 浙江大学 | 一种不确定数据流概率求和阈值查询方法 |
CN111026784B (zh) * | 2019-11-13 | 2022-05-03 | 浙江大学 | 一种不确定数据流概率求和阈值查询方法 |
CN111369302A (zh) * | 2020-03-17 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 实时生成积分的方法、系统及计算机可读存储介质 |
GB2614511A (en) * | 2020-10-30 | 2023-07-05 | Ibm | Dynamic replacement of degrading processing elements in streaming applications |
GB2614511B (en) * | 2020-10-30 | 2024-01-10 | Ibm | Dynamic replacement of degrading processing elements in streaming applications |
WO2022089199A1 (en) * | 2020-10-30 | 2022-05-05 | International Business Machines Corporation | Dynamic replacement of degrading processing elements in streaming applications |
US11341006B1 (en) | 2020-10-30 | 2022-05-24 | International Business Machines Corporation | Dynamic replacement of degrading processing elements in streaming applications |
CN112818039B (zh) * | 2021-02-04 | 2022-04-26 | 浙江邦盛科技有限公司 | 一种解决乱序事件和晚到数据的精准窗口处理方法 |
CN112818039A (zh) * | 2021-02-04 | 2021-05-18 | 浙江邦盛科技有限公司 | 一种解决乱序事件和晚到数据的精准窗口处理方法 |
CN114547022A (zh) * | 2022-01-28 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种数据缓存优化的方法、系统、设备和存储介质 |
CN114547022B (zh) * | 2022-01-28 | 2024-01-16 | 苏州浪潮智能科技有限公司 | 一种数据缓存优化的方法、系统、设备和存储介质 |
CN116841753A (zh) * | 2023-08-31 | 2023-10-03 | 杭州迅杭科技有限公司 | 一种流处理和批处理的切换方法及切换装置 |
CN116841753B (zh) * | 2023-08-31 | 2023-11-17 | 杭州迅杭科技有限公司 | 一种流处理和批处理的切换方法及切换装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110362600B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362600A (zh) | 一种乱序数据流分布式聚合查询方法、系统及介质 | |
Arasu et al. | Stream: The stanford data stream management system | |
Cormode et al. | Forward decay: A practical time decay model for streaming systems | |
Golab et al. | Issues in data stream management | |
CN103345514B (zh) | 大数据环境下的流式数据处理方法 | |
CN106873945A (zh) | 基于批处理和流式处理的数据处理架构及数据处理方法 | |
Qiu et al. | A packet buffer evaluation method exploiting queueing theory for wireless sensor networks | |
CN106484758B (zh) | 一种基于网格和聚类优化的实时数据流核密度估计方法 | |
CN103699696B (zh) | 一种云计算环境下的数据在线聚集方法 | |
CN102456069A (zh) | 一种数据流增量聚集统计、查询方法及查询系统 | |
CN102521347B (zh) | 基于优先级的模式匹配中间结果管理方法 | |
CN105302909B (zh) | 基于分区偏移计算的网络安全日志系统大数据检索方法 | |
Zhao | Complex event processing under constrained resources by state-based load shedding | |
Li et al. | Ladderfilter: Filtering infrequent items with small memory and time overhead | |
Li et al. | AdaptWID: An adaptive, memory-efficient window aggregation implementation | |
CN111771195A (zh) | 流处理设备和数据流处理方法 | |
Luo et al. | Survey on real-time anomaly detection technology for big data streams | |
Song et al. | A method for data stream processing based on curve fitting | |
Zhu et al. | Dalu: Adaptive learning rate update in distributed deep learning | |
CN108959521B (zh) | 基于n-of-N流模型的不确定轮廓查询并行处理方法及系统 | |
Wang et al. | An interpolation approach for missing context data based on the time-space relationship and association rule mining | |
Sun et al. | Research on dynamic load balancing of data flow under big data platform | |
CN103944955B (zh) | 基于无线网络的手机空间信息服务方法 | |
Hou et al. | HDSVM: a high efficiency distributed svm framework over data stream | |
CN103560921A (zh) | 一种网络流数据的归并方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |