CN113590891B - 一种实时流处理框架 - Google Patents
一种实时流处理框架 Download PDFInfo
- Publication number
- CN113590891B CN113590891B CN202110905935.4A CN202110905935A CN113590891B CN 113590891 B CN113590891 B CN 113590891B CN 202110905935 A CN202110905935 A CN 202110905935A CN 113590891 B CN113590891 B CN 113590891B
- Authority
- CN
- China
- Prior art keywords
- index
- global
- sub
- local
- items
- 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.)
- Active
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实时流处理框架,利用分布式空间索引系统,分布式空间索引系统包括全局索引及多个局部索引,全局索引由若干全局计算单元组成,局部索引由若干本地计算单元组成,全局索引将全局区域划分为若干个子区域,每个全局索引的节点分别对应全局区域的一个子区域,非叶节点将叶节点对应的子区域分成四个不相交的子区域;节点只保存对应子区域的范围和子区域内的索引项数量,不存储具体的索引项,索引项属于一个子区域的条件是索引项的中心点位于对应的子区域内。保证子区域间的索引项数大致相等,使得索引在应用场景中使负载尽量保持平衡。
Description
技术领域
本发明涉及空间索引技术领域,尤其涉及一种分布式空间索引系统及实时流处理框架。
背景技术
随着无线技术的快速发展和便携式设备的普及,基于位置的服务(LBS,Location-Based Service)在我们的日常生活中扮演着越来越重要的角色,如伴行监测、交通拥堵预测,路线推荐和道路规划等。作为LBS的主要数据源,时空数据以其时效性而闻名,这意味着时空数据的价值会随时间的流逝而快速衰减。因此,以实时的方式处理时空数据已成为热门话题。近年来,实时流处理框架(如Flink、Storm和Spark Streaming)的不断发展使得很多企业重视流式数据的实时处理。以实时的方式处理数据流能让企业对业务的变化做出更快速的响应。通过实时流处理框架处理和分析时空数据可以提供时效性更高的基于位置的实时服务(LBS-RT,Location Based Service in a Real-Time manner),如实时拥堵监测和实时伴行监测等。
范围查询是LBS中的基础性操作,具体来讲,范围查询需要找出指定空间范围内的所有时空对象。空间索引是提升范围查询性能的关键。R-tree索引及其变种是常用的空间索引。自R-tree索引发布以来,有很多工作致力于改善其检索性能,但这些索引只能在单节点上运行,当索引大型数据集时会出现单节点性能瓶颈。为解决此问题,一些工作致力于用分布式的方式索引数据集,这样可以将数据集分散到多个处理节点,并行的处理索引的查询操作。现有的分布式空间索引有按固定空间范围的方式实现数据集的划分,也有按随机的方式实现数据集的均匀划分。
LBS-RT往往用滑动时间窗口来维护动态的数据集,为提供范围查询能力LBS-RT需要在动态数据集上建立空间索引。滑动时间窗口每过一段时间(一个滑动间隔)窗口就向前滑动一次,滑动后需要将将新产生的时空数据添加索引中并且将过时的时空数据从索引项中删除。利用实时流处理框架实现的基于内存的分布式空间索引可以快速处理索引的查询和更新操作。
在使用基于实时流处理框架的分布式空间索引来索引大型动态时空数据集时,随着数据集的变化,按固定空间范围的方式划分数据集的分布式索引会出现负载失衡的现象;按随机方式均匀划分数据集的分布式索引能保持负载均衡,但是每一个查询项都要分发到所有从节点中执行查询,资源消耗较大。
现有一些索引实现了一个主从分布式空间索引用,在确定每个从节点负责的子区域后,该索引在每个从节点上建立局部索引,这样就完成了分布式空间索引的构建,但在更新频繁的应用场景中容易产生负载失衡现象。
故,有必要提出一种分布式空间索引系统及实时流处理框架来解决上述问题。
发明内容
针对上述提出的问题,本发明的目的在于提供一种分布式空间索引系统及实时流处理框架,实现负载均衡。
为实现上述目的,本发明采用如下技术方案:一种分布式空间索引系统,其包括全局索引及多个局部索引,全局索引由若干全局计算单元组成,局部索引由若干本地计算单元组成,全局索引将全局区域划分为若干个子区域,其中,每个全局索引的节点分别对应全局区域的一个子区域,非叶节点将叶节点对应的子区域分成四个不相交的子区域;节点只保存对应子区域的范围和子区域内的索引项数量,不存储具体的索引项,索引项属于一个子区域的条件是索引项的中心点位于对应的子区域内;叶节点的索引项数量有上限值M和下限值m,且M是m的两倍;全局索引的树高至少为2,每个本地计算单元对应一个子区域。
所述全局计算单元内形成一个密度网格,通过所述密度网格来表示索引项的空间分布,多个所述局部索引使用密度网格队列维护动态的所述密度网格。
当所述全局计算单元更新所述全局索引的结构,其包括以下步骤:
首先,以所有叶节点的集合作为参数,获得所有需要重构的子树;
然后,从上至下分裂节点的方式重构子树。
上述获得所有需要重构的子树,其步骤包括:
根据叶节点中索引项的数量是否在预设的下限值m和上限值M之间,确定全局索引是否需要调整树结构,若索引项的数量不在下限值m和上限值M之间,则调整全局索引结构;其中,m、M为整数值;
若叶节点内的索引项数小于预设值,则全局索引找到可重构的最小子树;否则,叶节点为需要重构的子树。
当根节点的四个子节点都是叶节点时,全局索引忽略叶节点越下界值m。
所述全局索引找到可重构的最小子树的步骤为:
将叶节点的父节点赋值给节点;
如果节点中的索引项数量在m和M之间,就将节点视为重建的节点,否者进入下一步骤;
如果节点中的索引项数量小于4.5m且节点不是根节点,将节点的父节点赋值给节点。
所述分裂节点来重构子树的具体步骤包括:当叶节点大于大于等于15*Mid,将节点分裂成四个子节点;其中,Mid=(m+M)/2;形成四个新叶节点;
若四个新叶节点中索引项数Sn大于等于m且小于M,则分裂得到了一个索引项数量在m于M之间的合格叶节点;否则,继续分裂新叶节点。
所述继续分裂新叶节点的步骤为:
在XOY坐标系中,在y轴上找一个边界,将所述新叶节点对应的区域划分成上下两个子区域,确保上半子区域包含的索引项数位于预设的索引项数范围值内;
在x轴上找一个边界,将上半子区域划分为左上、右上两个子区域(分别对应第一子节点、第二子节点),使得左上子区域的索引项数超过第一子节点的预设的索引项数的一个预设范围内,在x轴上找另一个边界,将下半子区域划分为左下、右下两个子区域,使得在左下子区域的索引项数大于预设的第三子节点的预设的索引项数的一个预设范围内;四个新叶节点分别索引分裂得到四个子区域。
所述预设的索引项数范围值内为上半子区域包含的索引项数刚好超过size1+size2,其中,size1为分裂成第一子节点的预设的索引项数,size2为分裂成第二子节点的预设的索引项数。
为实现上述目的,本发明还采用如下技术方案:一种利用分布式空间索引系统的实时流处理框架,其包括:密度网格计算任务、全局计算任务和局部计算任务。
密度网格计算任务,负责统计索引项的密度网格,每个滚动时间窗口会统计一个密度网格,然后将密度网格广播给全局计算任务的每个子任务,密度网格计算任务将其接收的索引项和查询项随机地转发给全局计算任务的某个子任务;
全局计算任务,接收到索引项或查询项后需将其转发到下游局部计算任务的子任务中,通过查询全局索引中与查询项或索引项的主引导记录相交的所有叶节点,该等叶节点对应的局部计算任务的子任务就是此查询项或索引项需要转发的地方;
局部计算任务,负责本地索引的更新和查询,分布式空间索引系统的负载是在局部计算任务上。
与现有技术相比,本发明分布式空间索引系统的有益效果在于,随着时间的推移,最初用全局索引划分的子区域慢慢产生数据倾斜,为了负载均衡,全局计算单元需要定期调整全局索引的结构,以保证子区域间的索引项数大致相等,使得索引在应用场景中使负载尽量保持平衡。
附图说明
图1为本发明分布式空间索引系统示意图;
图2为本发明分布式空间索引系统划分区域示意图;
图3为多个局部索引使用密度网格队列来维护动态的密度网格结构示意图。
图4为实时流处理框架Flink运行分布式空间索引系统工作流程图。
图5为本发明一实施例的叶节点ID分配表。
具体实施方式
下面通过本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1至图2,为本发明一种分布式空间索引系统(GQ-QBS),其包括全局索引(GQ-tree)及多个局部索引(QBS-tree)。全局索引由若干全局计算单元(Global Unit,GU)组成,局部索引由若干本地计算单元(Local Unit,LU)组成,全局索引通过递归的方式将全局区域划分为若干个子区域,每个本地计算单元对应一个子区域。
索引项由子区域分别划分至不同本地计算单元中,本地计算单元中的索引项建立于局部索引。本地计算单元之间可以通过并行的方式处理更新和查询操作。
全局索引是实现分布式计算的关键,其将全局区域进行划分,每个本地计算单元对应一个子区域。本发明全局索引有以下四个特征:
(1)每个全局索引的节点对应全局区域的一个子区域,其中,非叶节点将叶节点对应的子区域分成四个不相交的子区域;(2)节点只保存对应子区域的范围和子区域内的索引项数量,不存储具体的索引项,索引项属于一个子区域的条件是索引项的中心点位于对应的子区域内;(3)叶节点的索引项的位置坐标数量有上限值M和下限值m,且M是m的两倍;(4)全局索引的树高至少为2。
上述节点包括叶节点和非叶节点。
由于维护全局索引需要知道全部索引项的空间分布,然而,索引项只流经全局计算单元而不存储,所以,通过在全局计算单元内形成一个密度网格来表示索引项的空间分布。
密度网格将全局区域划分为m*n个大小相等的区域,并用一个m*n的二维数组存储每个网格内的索引项数量。全局区域采用矩形[(Glowx,Glowy),(Ghighx,Ghighy)]表示,其中,Glowx和Glowy分别为全局区域矩形左下角点的x轴和y轴的坐标值;Ghighx和Ghighy分别为全局区域矩形右上角点的x轴和y轴坐标值。全局区域矩形被划分为m行n列的网格。array为索引项空间分布的二维数组。现有一个索引项流过全局计算单元,它的中心点是(x0,y0)),公式(1)(2)可以计算它所属的网格对应的行row和列col,然后将array[row][col]自增1。
多个局部索引的索引是一个动态的数据集,这个数据集使用滑动时间窗口维护的。随着窗口的滑动,会有索引项流入窗口,也有索引项流出窗口。因此,密度网格也需要动态调整。
如图3所示,分布式空间索引系统使用密度网格队列来维护动态的密度网格。最右边的密度网格表示8:50到9:00到达的索引项的空间分布。当8:50至9:00的所有索引项都滑出窗口时,就将其从队列中移除。这样队列中的所有密度网格相加就是当前时间窗口内的所有索引项的空间分布情况。
随着时间的推移,最初用全局索引划分的子区域慢慢产生数据倾斜,为了负载均衡,全局计算单元需要定期调整全局索引的结构,以保证子区域间的索引项数大致相等。全局计算单元更新全局索引分以下两个步骤:首先,以所有叶节点的集合作为参数,获得所有需要重构的子树;然后,从上至下分裂节点的方式重构子树。由于全局索引不是平衡树,所以在分裂时不考虑树的平衡性。
获得所有需要重构的子树的步骤包括:
根据叶节点L中索引项的数量是否在预设的下限值m和上限值M之间,来确定全局索引是否需要调整树结构,若索引项的数量不在下限值m和上限值M之间,则调整全局索引结构;其中,m、M为整数值。
当根节点的四个子节点都是叶节点L时,全局索引忽略叶节点越下界值m的情况,其原因在于全局索引要求树高最低为2。
若叶节点L内的索引项数小于预设值(4.5*m),预设值根据网格粒度大小来确定,则全局索引找到可重构的最小子树;否则,叶节点L为需要重构的子树。
若叶节点L内的索引项数小于预设值4.5*m,全局索引找到可重构的最小子树的步骤为:
将叶节点L的父节点赋值给节点;
如果节点中的索引项数量在m和M之间,就将节点视为重建的节点,否者进入下一步骤;
如果节点中的索引项数量小于4.5m且节点不是根节点,将节点的父节点赋值给节点。
由于节点内的索引项数量是用密度网格估算的,所以上述边界值没有被设定为4*m而是4.5*m。
若叶节点L内的索引项数不小于4.5*m,叶节点L为需要重构的子树,本发明通过分裂节点来重构子树,每次分裂时会将节点分裂成四个子节点,为保证分裂后的新节点内的索引项数大于m,被分裂节点内的索引项数量必须大于4*m。
分裂节点来重构子树的具体步骤包括:
当叶节点大于大于等于15*Mid,将节点分裂成四个子节点;其中,Mid=(m+M)/2;形成四个新叶节点;
若四个新叶节点中索引项数Sn大于等于m且小于M,则分裂得到了一个索引项数量在m于M之间的合格叶节点;否则,继续分裂新叶节点;
继续分裂步骤为:
首先,在y轴上找一个边界,将节点负责的区域划分成上下两个子区域,确保上半子区域包含的索引项数位于预设的索引项数范围值内;如:上半子区域包含的索引项数刚好超过size1+size2,其中,size1为分裂成第一子节点的预设的索引项数,size2为分裂成第二子节点的预设的索引项数。
然后,在x轴上找一个边界,将上半子区域划分为左上、右上两个子区域(分别对应第一子节点、第二子节点),使得左上子区域的索引项数超过第一子节点的预设的索引项数的一个预设范围内,同样,在x轴上找另一个边界,将下半子区域划分为左下、右下两个子区域,使得在左下子区域的索引项数大于预设的第三子节点的预设的索引项数的一个预设范围内;
四个新叶节点分别索引分裂得到四个子区域。
具体的,当叶节点大于等于3*Mid且小于等于5*Mid;分裂形成了四个子区域可获得四个子区域索引项数,分别包含Sn/4、Sn/4、Sn/4及剩余的索引项数;
当节点大于大于等于5*Mid,且小于7*Mid;则分裂形成了四个子区域,四个子区域分别包含1.1m、1.1m、1.1m及剩余的索引项数;
当节点大于大于等于7*Mid,且小于8*Mid;则分裂形成了四个子区域,四个子区域分别包含Mid、Mid、Mid及剩余的索引项数;
当节点大于大于等于8*Mid,且小于8.5*Mid;则分裂形成了四个子区域,四个子区域分别包含1.2m、1.2m、1.2m及剩余的索引项数;
当节点大于大于等于8.5*Mid,且小于11*Mid;则分裂确认三个子区域,三个子区域分别包含Mid、Mid、(Sn-Mid)/2的索引项数,那么需要继续对子区域的节点分裂成四份;
当节点大于大于等于11*Mid,且小于15*Mid;则分裂确认一个子区域,该区域包含Mid的索引项数,那么继续对节点分裂成四份。
如图4,本发明通过用实时流处理框架Flink实现GQ-QBS的作业拓扑。作业有三个任务分别是:密度网格计算任务(Density Grid Task,DGT)、全局计算任务(Global IndexTask,GIT)和局部计算任务(Local Index Task,LIT)。
本发明分布式空间索引具有很好的可扩展性。当输入的数据流很大时,只用调整作业的并行度就能应对。全局计算任务的每个子任务会维护一个密度网格队列;局部计算任务的每个子任务会维护一个由索引项组成的数据块的队列。
如果GQ-QBS作业的滑动窗口每5分钟滑动一次且窗口大小为30分钟,那么局部计算任务的子任务中队列内一个数据块就是五分钟内的索引项集合,全局计算任务的子任务中队列内的密度网格就是用五分钟的索引项统计的密度网格。
实时流处理框架Flink提供使用滑动时间窗口的应用程序接口,每个时间窗口都会触发一次窗口函数的执行,每次执行会将整个窗口内的数据作为参数。每个窗口触发窗口函数调用时,将窗口内的查询项和索引项作为参数。
相对于滑动窗口,两个相邻的滚动时间窗口之间没有重叠部分。为了减少调用窗口函数时传递的参数量,本发明用一个五分钟的滚动口实现三十分钟每五分钟滑动一次的滑动窗口。作业运行时,将滚动窗口每次传入的必要数据添加到队列中,同时检查队列中有无超过三十分钟的数据,有则删除并更新相应数据结构。在全局计算任务中必要的数据是密度网格,删除队列中的密度网格需要更新GQ-tree;在局部计算任务中必要的数据是队列中的索引项块,删除索引项块后需要更新QBS-tree。
密度网格计算任务的输入是索引的查询项和索引项。密度网格计算任务负责统计索引项的密度网格,每个滚动时间窗口会统计一个密度网格,然后将密度网格广播给全局计算任务的每个子任务。密度网格计算任务将其接收的索引项和查询项随机地转发给全局计算任务的某个子任务。
图4中GIT的并行度为三,但图1所示的分布索引只有一个全局索引。这是因为,当数据流很大时,一个全局索引会使密度网格计算任务中所有的输入和密度网格都转发到一个全局计算任务的子任务中,这很容易出现单点性能瓶颈。因此,作业将全局计算任务的并行度为三。但是,为了保证查询的正确性,必须确保每个全局计算任务的子任务内的GQ-tree是一致的。GQ-tree是依据密度网格更新的,所以作业需要确保全局计算任务的子任务间密度网格的一致性。密度网格计算任务的子任务将统计的密度网格广播到全局计算任务的每个子任务中,这保证了全局计算任务的子任务中密度网格的一致性。
全局计算任务的子任务接收到索引项或查询项后需将其转发到下游局部计算任务的子任务中,通过查询GQ-tree中与查询项或索引项的主引导记录(MBR)相交的所有叶节点,该等叶节点对应的局部计算任务的子任务就是此查询项或索引项需要转发的地方。
如图4所示,全局计算任务的子任务是从上游的密度网格计算任务中获取密度网格的。密度网格也可以从局部计算任务的子任务内获取,因为局部计算任务的子任务中存储有窗口内全部的索引项。然而,这种方式可能会导致死锁。原因如下:Flink允许子任务共享时间段(Slot),假设全局计算任务的某个子任务a和局部计算任务的某个子任务b共享一个时间段,若某一时刻,a正在计算的是10:00-10:05的时间窗口函数,a需要从b中获取密10:00-10:05的度网格来更新GQ-tree,但b中当前计算过的时间窗口最大为9:55-10:00的窗口。a需要阻塞线程等待b,但是a和b在同一个线程中执行,这就导致死锁产生。
索引项也流经全局计算任务,所以密度网格可以在全局计算任务的子任务中统计得到。当全局计算任务需要更新GQ-tree时,全局计算任务的子任务可以从全局计算任务的其它子任务中获取密度网格。但这种方法会严重降低Flink作业的性能。因为,全局计算任务的子任务是在不同的Slot中异步执行的。若规定在10:00-10:05这个窗口函数统一更新GQ-tree,最先执行到10:00-10:05窗口函数的子任务需要阻塞等待其余子任务都执行到10:00-10:05窗口时,才能同步密度网格,再更新GQ-tree。这会严重影响作业性能。
局部计算任务负责本地索引的更新和查询,GQ-QBS分布式空间索引的主要负载是在局部计算任务上。只要实现局部计算任务的子任务之间的负载均衡即可实现整个作业的负载均衡。GQ-QBS是一个更新为主的分布式索引,所以只要使局部计算任务的子任务之间更新操作均衡即可。如果某些子任务上的查询比较频繁时,可以在这个子任务内发起一些子线程并行处理查询即可。
GQ-QBS中每个索引项都要执行一次插入操作和删除操作,所以保证局部计算任务的子任务之间更新操作平衡,只要保证局部计算任务的子任务间索引项数量大致相同即可。当局部计算任务的子任务间索引项数量差距较大时,GQ-tree能通过密度网格感知到,然后调整树结构实现再次平衡。GQ-tree的叶节点和局部计算任务的子任务是一一对应的,GQ-QBS作业是通过设置叶节点ID和Flink作业运行时局部计算任务的任务内的子任务ID实现这一对应关系的。
GQ-tree调整后叶节点ID会有三种变化:1)生成新的叶节点ID;2)废弃原有的叶节点ID;3)叶节点ID对应的叶节点在调整后负责的子区域发生变化。GQ-QBS的所有索引项只存储在在局部计算任务的各个子任务中。在调整树结构后,局部计算任务的子任务之间需要重新分配索引项。在局部计算任务的子任务之间传递数据,可以通过Redis数据库进行传递。
GQ-tree调整完结构后,叶节点ID需要谨慎地分配。假设,有四个叶子子节点的中间节点P被重构了。
如图5所示,重构前四个叶子子节点对应的ID分别是9、10、11、12,重构后四个新的叶子子节点临时命名为P1、P2、P3和P4。全局计算任务的子任务通过密度网格计算出局部计算任务的子任务内的索引项在P1-P4内的数量分布。如果将P1的叶节点ID指定为9,那么需要子任务9内的索引项只有346个仍属于调整后的其负责的区域,剩余的169个索引项需要迁移到10、11和12这三个任务中。GQ-tree调整后所有子任务能留存的索引项数量越多,需要迁移的索引项就越少。因此,最小化迁移数据时需要的网络带宽就转换成在表格1中选出四个数,这四个数既不同行也不同列且这四个数的和最大。可以通过匈牙利算法(HungaryAlgorithm)来解决此类问题的高效算法,因此它被用于GQ-tree的叶节点ID分配。如表格1所示,阴影背景的四个数字是匈牙利算法挑选出来的不同行不同列和最大的四个数。
GQ-tree为全局索引时,局部索引内的索引项数基本稳定在m到2m之间;QBS-tree为全局索引时,局部索引内的索引项数基本在1.2m到4.3m之间。因此,GQ-tree作为全局索引时负载均衡效果更好。
GQ-tree作为全局索引时,索引项总数在一百万、两百万、三百万时作业运行的性能。由图可知,GQ-QBS的吞吐量和延迟不会随着索引项总数的变化而大幅波动。吞吐量和延迟主要由GQ-tree的叶节点索引项数的下界m决定。局部索引中的索引项数决定整个分布式索引的性能,局部索引中的索引项数量由GQ-tree的叶节点索引项数的下界m决定。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,均系本发明所保护范围。
Claims (1)
1.一种实时流处理框架,其特征在于,利用分布式空间索引系统,其包括全局索引及多个局部索引,全局索引由若干全局计算单元组成,局部索引由若干本地计算单元组成,全局索引将全局区域划分为若干个子区域,其中,每个全局索引的节点分别对应全局区域的一个子区域,非叶节点将叶节点对应的子区域分成四个不相交的子区域;节点只保存对应子区域的范围和子区域内的索引项数量,不存储具体的索引项,索引项属于一个子区域的条件是索引项的中心点位于对应的子区域内;叶节点的索引项数量有上限值M和下限值m,且M是m的两倍;全局索引的树高至少为2个,每个本地计算单元对应一个子区域;
实时流处理框架包括:密度网格计算任务、全局计算任务和局部计算任务;
所述密度网格计算任务,负责统计索引项的密度网格,每个滚动时间窗口会统计一个密度网格,然后将密度网格广播给全局计算任务的每个子任务,密度网格计算任务将其接收的索引项和查询项随机地转发给全局计算任务的某个子任务;
所述全局计算任务,接收到索引项或查询项后需将其转发到下游局部计算任务的子任务中,通过查询全局索引中与查询项或索引项的主引导记录相交的所有叶节点,所述叶节点对应的局部计算任务的子任务就是此查询项或索引项需要转发的地方;
所述局部计算任务,负责本地索引的更新和查询,分布式空间索引系统的负载是在局部计算任务上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905935.4A CN113590891B (zh) | 2021-08-09 | 2021-08-09 | 一种实时流处理框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905935.4A CN113590891B (zh) | 2021-08-09 | 2021-08-09 | 一种实时流处理框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590891A CN113590891A (zh) | 2021-11-02 |
CN113590891B true CN113590891B (zh) | 2023-08-11 |
Family
ID=78256259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110905935.4A Active CN113590891B (zh) | 2021-08-09 | 2021-08-09 | 一种实时流处理框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590891B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544332A (zh) * | 2012-07-16 | 2014-01-29 | 复旦大学 | 一种基于密度梯度热点聚类分组和局部求解技术的哑元综合优化方法 |
CN106599189A (zh) * | 2016-12-14 | 2017-04-26 | 大连大学 | 基于云计算的动态Skyline查询装置 |
CN108063731A (zh) * | 2018-01-03 | 2018-05-22 | 烟台大学 | 一种分布式数据流中基于数据分布的负载均衡分发方法 |
CN110659286A (zh) * | 2019-09-05 | 2020-01-07 | 苏州大学 | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 |
CN112699113A (zh) * | 2021-01-12 | 2021-04-23 | 上海交通大学 | 时序数据流驱动的工业制造流程运行监测系统 |
CN113055333A (zh) * | 2019-12-26 | 2021-06-29 | 国网山西省电力公司信息通信分公司 | 可自适应动态调整密度网格的网络流量聚类方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10237310B4 (de) * | 2002-08-14 | 2006-11-30 | Wismüller, Axel, Dipl.-Phys. Dr.med. | Verfahren, Datenverarbeitungseinrichtung und Computerprogrammprodukt zur Datenverarbeitung |
US7792607B2 (en) * | 2005-01-04 | 2010-09-07 | Deere & Company | Vision-aided system and method for guiding a vehicle |
US8150574B2 (en) * | 2005-01-04 | 2012-04-03 | Deere & Company | Method and system for guiding a vehicle with vision-based adjustment |
US9551583B1 (en) * | 2015-07-06 | 2017-01-24 | International Business Machines Corporation | Hybrid road network and grid based spatial-temporal indexing under missing road links |
JP2022517229A (ja) * | 2019-01-11 | 2022-03-07 | オンスケール,インコーポレイテッド | 計算ウィンドウ処理のためのシステムおよび方法 |
-
2021
- 2021-08-09 CN CN202110905935.4A patent/CN113590891B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544332A (zh) * | 2012-07-16 | 2014-01-29 | 复旦大学 | 一种基于密度梯度热点聚类分组和局部求解技术的哑元综合优化方法 |
CN106599189A (zh) * | 2016-12-14 | 2017-04-26 | 大连大学 | 基于云计算的动态Skyline查询装置 |
CN108063731A (zh) * | 2018-01-03 | 2018-05-22 | 烟台大学 | 一种分布式数据流中基于数据分布的负载均衡分发方法 |
CN110659286A (zh) * | 2019-09-05 | 2020-01-07 | 苏州大学 | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 |
CN113055333A (zh) * | 2019-12-26 | 2021-06-29 | 国网山西省电力公司信息通信分公司 | 可自适应动态调整密度网格的网络流量聚类方法和装置 |
CN112699113A (zh) * | 2021-01-12 | 2021-04-23 | 上海交通大学 | 时序数据流驱动的工业制造流程运行监测系统 |
Non-Patent Citations (1)
Title |
---|
QBS-Tree: A Spatia Index with High Update Efficiency for Real-Time Processing System;Zonglei Zhang等;《IEEE》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113590891A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hua et al. | An Adaptive Data Placement Scheme for Parallel Database Computer Systems. | |
US7457835B2 (en) | Movement of data in a distributed database system to a storage location closest to a center of activity for the data | |
US20170046412A1 (en) | Method for Querying and Updating Entries in a Database | |
CN103345514B (zh) | 大数据环境下的流式数据处理方法 | |
Poosala et al. | Estimation of query-result distribution and its application in parallel-join load balancing | |
US20060182046A1 (en) | Parallel partition-wise aggregation | |
CN105589951A (zh) | 一种海量遥感影像元数据分布式存储方法及并行查询方法 | |
WO2023104192A1 (zh) | 一种集群系统的管理方法及装置 | |
CN109033109B (zh) | 数据处理方法及系统 | |
CN101916280A (zh) | 并行计算系统及按查询内容进行负载均衡的方法 | |
Guralnik et al. | Parallel tree-projection-based sequence mining algorithms | |
CN105095413A (zh) | 一种解决数据倾斜的方法及装置 | |
US9235621B2 (en) | Data-aware scalable parallel execution of rollup operations | |
CN110941602B (zh) | 数据库的配置方法、装置、电子设备及存储介质 | |
CN109196807B (zh) | 网络节点以及操作网络节点以进行资源分发的方法 | |
CN105975345A (zh) | 一种基于分布式内存的视频帧数据动态均衡存储管理方法 | |
Ding et al. | Optimal operator state migration for elastic data stream processing | |
WO2014062183A1 (en) | Communicating tuples in a message | |
Cai et al. | DITIR: Distributed index for high throughput trajectory insertion and real-time temporal range query | |
Panigrahi et al. | DATALET: An approach to manage big volume of data in cyber foraged environment | |
Shahvarani et al. | Distributed stream KNN join | |
Lv et al. | An effective framework for asynchronous incremental graph processing | |
CN113590891B (zh) | 一种实时流处理框架 | |
CN110990059B (zh) | 一种用于倾斜数据的流式计算引擎运行方法及系统 | |
Chen et al. | MRSIM: mitigating reducer skew In MapReduce |
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 |