CN115757421A - 数据处理系统和方法 - Google Patents
数据处理系统和方法 Download PDFInfo
- Publication number
- CN115757421A CN115757421A CN202211492989.3A CN202211492989A CN115757421A CN 115757421 A CN115757421 A CN 115757421A CN 202211492989 A CN202211492989 A CN 202211492989A CN 115757421 A CN115757421 A CN 115757421A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- task
- value storage
- storage device
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种数据处理系统,包括:Flink执行引擎,用于执行任务请求;Key‑Value存储装置,用于存储数据;Flink执行引擎通过调用远程API,从Key‑Value存储装置获取第一数据,根据获取的第一数据执行任务请求,并将产生的第二数据存储至Key‑Value存储装置。本申请实施例还提供了数据处理方法、装置、计算机设备和计算机可读存储介质。本申请实施例采用上述技术方案,通过远端的Key‑Value存储装置实现KeyedStateBackend,通过网络交互的方式访问和调取Key‑Value存储装置中的数据,可以满足超大规模状态下的读写,方便原生架构中各种混部资源的实现,无需数据迁移,提升数据处理系统的适用性和提高数据处理效率。
Description
技术领域
本申请涉及计算机技术领域和大数据技术领域,尤其涉及一种数据处理系统、方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着计算机和大数据技术的发展,针对数据的存储和使用成为了需要关注的技术重点。在很多应用场景下,越实时的数据越有价值。例如,在直播、推荐等场景需要近实时的数据来进行数据分析。
Flink(流式数据处理系统)作为对有界和无界数据流进行状态计算的分布式处理引擎和框架。其中的KeyedStateBackend(键控状态后端)用于承载state(状态)负载,传统的KeyedStateBackend实现方式采用memory StateBackend(基于内存存储)和RocksDBStateBackend(基于高性能的嵌入式KV数据库存储)两种方式实现。但是memoryStateBackend需要在内存中维护所有状态,对内存空间具有较高要求;RocksDBStateBackend在面对大规模状态/任务的情况下,受到诸多局限,在调整任务的状态分布时,需要进行数据迁移,会占用较长时间,影响处理效率。
发明内容
本申请实施例提供一种数据处理系统和方法,以解决相关技术存在的问题,技术方案如下:
第一方面,本申请实施例提供了一种数据处理系统,包括:
Flink执行引擎,用于执行任务请求;
Key-Value存储装置,用于存储数据;
Flink执行引擎通过调用远程API,从Key-Value存储装置获取第一数据,根据获取的第一数据执行任务请求,并将产生的第二数据存储至Key-Value存储装置。
第二方面,本申请实施例提供一种数据处理方法,包括:
接收任务请求;
调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行任务请求,并将产生的第二数据存储至Key-Value存储装置。
第三方面,本申请实施例提供一种数据处理装置,包括:
任务接收模块,用于接收任务请求;
任务执行模块,用于调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行任务请求,并将产生的第二数据存储至Key-Value存储装置。
第四方面,本申请实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,以使至少一个处理器能够执行上述数据处理的方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储计算机指令,当计算机指令在计算机上运行时,上述各方面任一种实施方式中的方法被执行。
本申请实施例采用上述技术方案,通过远端的Key-Value存储装置实现KeyedStateBackend,通过网络交互的方式访问和调取Key-Value存储装置中的数据,可以满足超大规模的状态读写,方便原生架构中各种混部资源的实现,无需数据迁移,提升数据处理系统的适用性和提高数据处理效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1示意性示出了根据本申请实施例的环境示意图;
图2示意性示出了根据本申请实施例一的数据处理系统的架构示意图;
图3示意性示出了根据本申请实施例一的Flink执行引擎中StateBackend层级架构示意图。
图4示意性示出了根据本申请实施例二的数据处理方法的流程图;
图5示意性示出了根据本申请实施例三的数据处理装置的框图;以及
图6示意性示出了根据本申请实施例四的适于实现数据处理方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请涉及到的一些术语解释:
Flink,属于分布式实时计算系统,用于对无界和有界数据流进行有状态(state)计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。其中,state一般指一个具体的任务(task)/算子(operator)的状态。流处理,用于处理(如查询)流数据。流数据通常为在线数据,无边界性。
Key-Value存储装置,指的是一类通过键/值对进行数据存取的NoSQL数据库系统,是一种分布式存储系统,查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询。
远程API(Application Programming Interface,应用程序编程接口),它允许CoppeliaSim和外部应用程序(即运行在不同进程或不同机器上的应用程序)之间的通信,是跨平台的,并支持服务调用(即阻塞调用)和双向数据流。
HDFS(Hadoop Distributed File System),为Hadoop分布式文件系统。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
Flink架构中的StateBackend(状态后端),用于存储任务状态。从用途上划分为两种OperatorStateBackend(操作员状态后端)和KeyedStateBackend(键控状态后端)。OperatorStateBackend一般存的是一些与计算逻辑本身无关的数据,如kafka(开源流处理平台)的offset(序号),体量比较小,不会受数据规模与计算逻辑影响。而KeyedStateBackend则是存储与计算逻辑强绑定的状态数据,如agg(聚合函数)/双流join(联接)的中间结果,大小受着数据规模和计算逻辑影响,一般大流量,计算复杂的任务state会非常大。
OperatorStateBackend由于比较轻量级,主要是列表型数据结构,社区也只有内存一种实现,数据都写到内存,然后checkpoint(检查)的时候一次性写入到HDFS。
KeyedStateBackend承载了主要的state(状态)负载,对容量和性能要求都极高,数据按照Key-Value模式存储。
传统的KeyedStateBackend有两种实现方式:
一、memoryStateBackend,数据全部存储在内存中,一般只支持小状态类的作业,而且当前Flink架构不支持IncrementalCheckpoint(增量检查点),所以适用范围有限。通过内存维护全部状态,检查时只能将内存所有数据一次性保存下来。
二、RocksdbStateBackend,基于本地SSD(Solid State Drive,固态驱动器)磁盘进行状态管理,可用于大规模的状态本地读写。但是缺陷在于CPU(Central ProcessingUnit,中央处理器)开销,如序列化,压缩读写放大;并且和云原生架构不太匹配,因此比较难享受到混部的资源。在资源伸缩时底层KeyGroup(键群)会重新分布,数据迁移耗时,大状态时恢复慢。
本申请实施例,提供一种Remote statebackend(远程状态后端)的实现方式。
下面提供本申请实施例的示例性应用环境。图1示意性示出了根据本申请实施例的环境应用示意图。
服务平台(2,3),可以提供数据处理等服务,其可以是单个服务器、服务器集群或云计算服务中心。其中,服务平台2/3内置有数据处理系统10,用于与服务平台3/2交互并提供实时或离线处理。
需要说明的是,图1中的服务器的数量仅是示意性的,不用于限制本申请的专利保护范围。
下面,将以上述服务平台2为执行主体提供若干个实施例,来说明数据处理方案。
实施例一
图2示意性示出了根据本申请实施例一的数据处理系统的架构图。如图2所示,该数据处理系统可以包括Flink执行引擎200和Key-Value存储装置300。
Flink执行引擎200,用于执行任务请求。Flink执行引擎200包括原生Flink架构的功能,例如调度任务,多个任务并行执行、checkpoint(检查)等。
Key-Value存储装置300,用于存储数据(如键值对)。可以是一种Key-Value数据库系统,按照Key-Value存储模式存储和调用数据。通过相匹配的SDK(Software DevelopmentKit,软件开发工具包)可以实现与Flink执行引擎200互联,以使得Flink执行引擎200可以访问和获取Key-Value存储装置300中的数据。
本申请实施例中,Flink执行引擎200通过调用远程API,Key-Value存储装置300中获取第一数据,根据获取的第一数据执行任务请求,并将产生的第二数据存储至Key-Value存储装置300。
本申请实施例中,产生的第二数据可以是相对于执行任务请求之前,Key-Value存储装置中的第一数据来说,用于区分两种数据;执行任务请求之前,Key-Value存储装置中的数据为第一数据,基于执行任务请求而新产生的数据为第二数据。可以理解,Key-Value存储装置中存储的数据包括第一数据和第二数据。
如图2所示,Flink执行引擎200包括:分区模块,用于解析任务请求(task),根据解析结果确定任务执行方式,基于任务执行方式将任务请求分成多个子任务(subtask);其中,每个子任务分成多个状态(state);并对多个状态进行切片,生成多个键群(keyGroup,图2中kg1、kg2……kg8)。
确定任务执行方式可以是确定将任务请求(task)分为多少个子任务,这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。确定任务执行方式还可以确定哪几个子任务并行执行,或者子任务的执行顺序或者执行的时间节点。一个子任务又被分为多个状态,通过任务配置将一个子任务分成多个状态;也可以通过任务配置将一个状态分成多个键群。依次执行完子任务的多个键群,即执行完该子任务。
Key-Value存储装置300包括多个片组(shard,图2中sh1、sh2……sh8),一个片组对应一个键群设置。具体地,Key-Value存储装置300内部,本身存在表和shard的概念,shard是不可分割的数据切片,也即最小粒度。通过shard和keyGroup一一对应,即对齐设置,两者数量保持一致,可以简化数据在keyGroup与shard之间的复杂对应,Flink在keygroup与task发送对应关系变化的时候,也不会发送多个subtask操作同一个shard的情况。Key-Value存储装置300中的表概念可以对应到Flink的task上,当一个task包括多个state的情况下,可以通过对state添加key(键值)前缀的方式进行标识。
本申请实施例中,通过将Flink执行引擎200执行任务时的模式分区,与Key-Value存储装置300中的表概念和shard概念一一对应,可以方便数据的调用和读取,避免了数据的调用和读取时的复杂计算,进一步提高数据处理效率。
Flink执行引擎200还包括记录模块,用于记录片组和键群的对应关系。记录模块可以是在执行键群的情况下执行。记录模块还可以记录数据流中的句柄,以方便从shard中获取第一数据和/或第二数据。
本申请实施例的数据处理系统,在资源扩缩的情况下,例如将3个子任务缩成2个任务的情况下,执行keyGroup的时候,可以只需找到对应的shard进行数据处理,无需进行数据迁移操作,因此,可以满足在大规模状态任务下,任意进行资源扩缩。
本申请实施例的数据处理系统,Flink执行引擎200和Key-Value存储装置300之间,通过发送网络请求的方式实现数据的访问和调用,无需下载或者加载文件,可以不需要与原生架构匹配,可以调用原生架构中的各种混部资源,适用性广。
Flink执行引擎200还包括以下模块,以满足执行任务请求时的多种功能。
检查模块,用于记录第二数据,并根据执行情况触发相应操作。可以是记录执行键群过程中的第二数据,在执行任务请求的时候,触发快照;或者在需要重启子任务的时候,触发恢复等操作。
快照模块,用于发送快照请求至Key-Value存储装置300,以使Key-Value存储装置300执行快照操作,用于获取快照信息,用户执行出错的情况下,方便任务恢复。
恢复模块,用于在执行任务出现异常的情况下,发送恢复请求至Key-Value存储装置300,以获取相应时间节点的快照信息。通过获得异常之前时间节点的处理进程,以从该时间节点处继续执行,提高数据处理效率。
清理模块,用于发送数据删除请求至Key-Value存储装置300,以使Key-Value存储装置300删除数据删除请求中请求删除的第二数据。
在一个示例中,Flink执行引擎可以通过配置时间间隔,以在达到预设的时间间隔时(例如,每间隔1小时),启动任务查询,查询checkpoint(检查)信息,以确定不会再使用的第二数据。这些不会再使用的第二数据确定为待删除的第二数据。通过第二数据的表信息,请求Key-Value存储装置300将对应表下的第二数据删除。也可以是通过第二数据的键群信息,请求Key-Value存储装置300将该键群的对应片组下的第二数据删除。
在一个示例中,Flink执行引擎基于查询checkpoint(检查)信息,可以确定不需要再继续执行的状态,再发生请求至Key-Value存储装置300,将该状态中多个键群的对应片组中的第二数据删除。
通过对Key-Value存储装置中的数据进行清理和删除,以避免占用空间,造成资源浪费。
如图3所示,本申请实施例,Flink执行引擎200的StateBackend可以包括以下层级:
StreamOperatorStateHandler(流运算符状态处理):用于操作StateBackend,分为三块:Init(初始化)StateBackend;Checkpoint,进行snapshot持久化;Savepoint,进行时间节点持久化。
StateBackend:分为三个部分:
Cache StateBackend(缓存状态后端):扩展引入Cache Layer层,用于解决热点数据的访问,同时通过Cache到内存来减少序列化开销。
lockDISK ON SSD,锁定磁盘。
Remote StateBackend:将原先存储在Rocksdb上的KeyedState,替换为存储在Key-Value存储装置300上,实现大规模状态的数据处理。
State:具体的State存储类型,不同类型的State会应用于SQL(Structured QueryLanguage,结构化查询语言)不同场景的算子上。
CheckpointAPI(检擦接口):用于实现检查和恢复。
实施例二
图4示出根据本申请一实施例的数据处理方法的流程图。如图4所示,该数据处理方法可以包括:
S410,接收任务请求。
Flink执行引擎接收任务请求,以实现对无界和有界数据流进行有状态(state)计算。
S420,调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储至所述Key-Value存储装置。
Flink执行引擎调用Flink架构中的模块执行任务请求的内容,包括从远端Key-Value存储装置获取第一数据,并将产生的第二数据存储至Key-Value存储装置,以完成各模块功能的实现。
在一种实施方式中,所述调用远程API从远端Key-Value存储装置获取第一数据之前,包括:对所述任务请求进行解析,确定任务执行方式;
根据所述任务执行方式分配任务状态;其中,所述分配任务状态包括:将一个所述任务请求分成多个子任务;其中,每个所述子任务被分成多个状态;对所述多个状态进行切片,生成多个键群。
对任务请求进行解析之后,可以根据实时的资源情况配置任务执行方式;也可以是配置的默认任务执行方式。确定任务执行方式包括确定分为多少个子任务,这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。确定任务执行方式还可以确定哪几个子任务并行执行,或者子任务的执行顺序或者执行的时间节点。一个子任务又包括多个状态,通过任务配置将一个子任务分成多个状态;也可以通过任务配置将一个状态分成多个键群。
在一个示例中,一般将每个state切分成1024个键群。
在一种实施方式中,所述根据获取的第一数据执行所述任务请求,包括:
根据CPU的资源使用信息变换所述任务执行方式。
基于变换的所述任务执行方式,变换分配任务状态,其中,所述变换分配任务状态包括:变换所述子任务的数量、变换所述状态对应的子任务、和/或变换所述键群对应的状态。例如,资源足够的时候,将一个任务请求原先区分的3个子任务缩成2个任务。
在子任务数量发生变化的情况下,通过键群的对应的片组获取第一数据。例如,在原有架构为图3所示的架构的情况下,将原来的三个子任务缩成2个子任务,则有可能kg4对应到stae1中,kg7应到state2中。则在执行kg4的情况下,只需从Key-Value存储装置的sh4调用和读取数据即可,无需将kg4的数据搬迁至state1中,可以减少数据迁移的操作,提高数据处理效率。同样的,在执行kg7的情况下,只需从Key-Value存储装置的sh7调用和读取数据即可,无需将kg7的数据搬迁至state2中。
在一种实施方式中,所述调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储至所述Key-Value存储装置,包括:基于所述键群,向远端Key-Value存储装置发送数据获取请求,从所述键群的对应片组中获取第一数据。
根据获取的第一数据执行所述键群,并将产生的第二数据存储至所述键群的对应片组。
将任务进行配置分区之后,依次执行多个键群,从而执行完成任务请求。每个键群分别对应Key-Value存储装置中的片组,因此,在执行键群的时候,可以从键群的对应片组中调取和读取数据,提高执行效率。
在一种实施方式中,该方法还包括:
记录执行所述键群的第二数据;将所述第二数据对应到所述键群所在的子任务;
通过所述子任务发起快照请求,以使得所述子任务中多个键群的多个对应片组执行快照操作,并返回快照地址至所述子任务。
该执行过程可以是检查模块(Checkpoint)执行。该阶段流程处理的是一条记录,根据任务分区路径(keygroup-state-subtask)会把执行键群相应的过程数据路由到对应的subtask。subtask如果涉及到操作state,则在state操作层会发起对应keygroup映射到的Key-Value存储装置的shard的读/写请求,来完成数据的读/写。Key-Value存储装置返回快照地址可以为返回多个快照地址的地址列表,以将多个快照地址并行发送,提高发送效率。
本申请实施例中,通过Key-Value存储装置执行快照操作,以记录当前时间节点的读/写请求,以方便在执行异常的情况下,或者重启子任务的情况下,通过快照获取异常前的时间节点的读/写请求,以继续从该时间节点开始执行任务。
在一种实施方式中,数据处理方法还还包括:
通过所述子任务将接收到的快照地址列表,发送给检查模块;
通过所述检查模块将所述快照地址的第二数据存储至HDFS。
subtask将快照地址列表作为句柄提交给检查模块,检查模块收齐所有subtask的Snapshot(快照),会将该第二数据持久化到HDFS。快照中包含该时间节点执行的事件,执行该事件所需要请求的数据,以及执行该事件需要的第二数据或者产生的第二数据等信息。通过将快照地址的第二数据存储至HDFS,实现对快照的持久化存储。以方便任务重启时,从HDFS读取第二数据。
检查模块在完成Snapshot阶段时,会同步发起Snapshot ACK(ACKnowledgeCharacter,确认)请求给到Key-Value存储装置,表示该Snapshot结束。Key-Value存储装置收到ACK请求会保留相应的Snapshot快照,在保留时间超过预设时间阈值或者保留失败的情况下,则会删除对应的Snapshot。
在一种实施方式中,数据处理方法还包括:
在重启任务请求的情况下,从所述HDFS读取所述第二数据;
基于所述第二数据,获取分配任务状态。
由于CheckpointId(快照地址)对应的第二数据信息会存储到HDFS上,restore(数据恢复)过程实际上是从HDFS上读回第二数据并且重新分布keygroup到task的过程。Key-Value存储装置的信息是shard绑定到keygroup上,因此shard到subtask的分配遵循一一对应的原则即可。
在一种实施方式中,数据处理方法还包括:
在重启子任务的情况下,向所述子任务中多个键群的对应片组发送快照地址和恢复请求,所述恢复请求包括恢复时间节点,以使所述对应片组切换至所述恢复时间节点的快照。
每个子任务会分配对应keyGroup,也即Shard列表,以及该列表对应的快照地址。在启动子任务时,针对任务恢复逻辑,向Key-Value存储装置发送时间节点恢复请求,该子任务中多个键群的对应片组切换到对应时间节点的快照,返回至子任务,以方便子任务或者键群从该恢复时间节点开始继续执行任务。
在一种实施方式中,数据处理方法还包括:
基于预设的时间间隔,遍历记录的所述第二数据,并从中确定待删除的第二数据;
基于所述待删除的第二数据,获取所述待删除的第二数据的对应片组;
发送删除请求至所述Key-Value存储装置,以使所述Key-Value存储装置删除所述对应片组的第二数据。
在一个示例中,Flink执行引擎可以通过配置时间间隔,以在达到预设的时间间隔时(例如,每间隔1小时),启动任务查询,查询checkpoint(检查)信息,以确定不会再使用的第二数据。这些不会再使用的第二数据确定为待删除的第二数据。通过第二数据的表信息,请求Key-Value存储装置300将对应表下的第二数据删除。也可以是通过第二数据的键群信息,请求Key-Value存储装置300将该键群的对应片组下的第二数据删除。
在一个示例中,Flink执行引擎基于查询checkpoint(检查)信息,可以确定不需要再继续执行的状态,再发生请求至Key-Value存储装置300,将该状态中多个键群的对应片组中的第二数据删除。
本申请实施例通过定期查询检查信息,以对Key-Value存储装置中的数据进行清理和删除,以避免占用空间,造成资源浪费。
实施例三
图5示出根据本申请一实施例的数据处理装置的结构框图。如图5所示,该装置可以包括:任务接收模块510和任务执行模块520。
任务接收模块510用于接收任务请求;
任务执行模块520用于调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储至所述Key-Value存储装置。
在一种实施方式中,任务执行模块520用于:在所述调用远程API从远端Key-Value存储装置获取第一数据之前,对所述任务请求进行解析,确定任务执行方式;
根据所述任务执行方式分配任务状态;其中,所述分配任务状态包括:将一个所述任务请求分成多个子任务;其中,每个所述子任务被分成多个状态;对所述多个状态进行切片,生成多个键群。
在一种实施方式中,任务执行模块520用于:
根据CPU的资源使用信息变换所述任务执行方式;
基于变换的所述任务执行方式,变换分配任务状态,其中,所述变换分配任务状态包括:变换所述子任务的数量、变换所述状态对应的子任务、和/或变换所述键群对应的状态。
在一种实施方式中,任务执行模块520可以用于:
基于所述键群,向远端Key-Value存储装置发送数据获取请求,从所述键群的对应片组中获取第一数据;
根据获取的第一数据执行所述键群,并将产生的第二数据存储至所述键群的对应片组。
在一种实施方式中,任务执行模块520用于:
记录执行所述键群的第二数据;将所述第二数据对应到所述键群所在的子任务;
通过所述子任务发起快照请求,以使得所述子任务中多个键群的多个对应片组执行快照操作,并返回快照地址至所述子任务。
在一种实施方式中,任务执行模块520用于:
通过所述子任务将接收到的快照地址列表,发送给检查模块;
通过所述检查模块将所述快照地址的第二数据存储至HDFS。
在一种实施方式中,任务执行模块520用于:
在重启任务请求的情况下,从所述HDFS读取所述第二数据;
基于所述第二数据,获取分配任务状态。
在一种实施方式中,任务执行模块520用于:
在重启子任务的情况下,向所述子任务中多个键群的对应片组发送快照地址和恢复请求,所述恢复请求包括恢复时间节点,以使所述对应片组切换至所述恢复时间节点的快照。
在一种实施方式中,任务执行模块520用于:
基于预设的时间间隔,遍历记录的所述第二数据,并从中确定待删除的第二数据;
基于所述待删除的第二数据,获取所述待删除的第二数据的对应片组;
发送删除请求至所述Key-Value存储装置,以使所述Key-Value存储装置删除所述对应片组的第二数据。
本申请实施例各装置中的各模块的功能可以参见上述数据处理方法中的对应描述,在此不再赘述。
实施例四
图6示意性示出了根据本申请实施例四的适于实现数据处理方法的计算机设备的硬件架构示意图。所述计算机设备10000可以为基于Flink的服务平台2或其一部分。所述计算机设备10000其是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。
其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如数据处理方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信连接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的数据处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请。
实施例五
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的数据处理方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的数据处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (17)
1.一种数据处理系统,其特征在于,包括:
Flink执行引擎,用于执行任务请求;
Key-Value存储装置,用于存储数据;
所述Flink执行引擎通过调用远程API,从所述Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储至所述Key-Value存储装置。
2.根据权利要求1所述的系统,其特征在于,所述Flink执行引擎包括:
分区模块,用于:解析所述任务请求,根据解析结果确定任务执行方式,基于任务执行方式将所述任务请求分成多个子任务;其中,每个所述子任务被分成多个状态;对所述多个状态进行切片,生成多个键群。
3.根据权利要求2所述的系统,其特征在于,所述Key-Value存储装置包括多个片组,一个所述片组对应一个所述键群。
4.根据权利要求3所述的系统,其特征在于,所述Key-Value存储装置包括:
记录模块,用于记录所述片组和所述键群的对应关系。
5.根据权利要求3所述的系统,其特征在于,所述Flink执行引擎包括:
检查模块,用于记录第二数据,并根据执行情况触发相应操作;
快照模块,用于发送快照请求至所述Key-Value存储装置,以使所述Key-Value存储装置执行快照操作;
恢复模块,用于在执行任务出现异常的情况下,发送恢复请求至所述Key-Value存储装置,以获取相应时间节点的快照信息;和/或,
清理模块,用于发送数据删除请求至所述Key-Value存储装置,以使所述Key-Value存储装置删除所述数据删除请求中请求删除的第二数据。
6.一种数据处理方法,其特征在于,包括:
接收任务请求;
调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储值所述Key-Value存储装置。
7.根据权利要求6所述的方法,其特征在于,所述调用远程API从远端Key-Value存储装置获取第一数据之前,包括:
对所述任务请求进行解析,确定任务执行方式;
根据所述任务执行方式分配任务状态;其中,所述分配任务状态包括:将一个所述任务请求分成多个子任务;其中,每个所述子任务被分成多个状态;对所述多个状态进行切片,生成多个键群。
8.根据权利要求7所述的方法,其特征在于,所述根据获取的第一数据执行所述任务请求,包括:
根据CPU的资源使用信息变换所述任务执行方式;
基于变换的所述任务执行方式,变换分配任务状态,其中,所述变换分配任务状态包括:变换所述子任务的数量、变换所述状态对应的子任务、和/或变换所述键群对应的状态。
9.根据权利要求7或8所述的方法,其特征在于,所述调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储值所述Key-Value存储装置,包括:
基于所述键群,向远端Key-Value存储装置发送数据获取请求,从所述键群的对应片组中获取第一数据;
根据获取的第一数据执行所述键群,并将产生的第二数据存储至所述键群的对应片组。
10.根据权利要求9所述的方法,其特征在于,还包括:
记录执行所述键群的第二数据;将所述第二数据对应到所述键群所在的子任务;
通过所述子任务发起快照请求,以使得所述子任务中多个键群的多个对应片组执行快照操作,并返回快照地址至所述子任务。
11.根据权利要求10所述的方法,其特征在于,还包括:
通过所述子任务将接收到的快照地址列表,发送给检查模块;
通过所述检查模块将所述快照地址的第二数据存储至HDFS。
12.根据权利要求11所述的方法,其特征在于,还包括:
在重启任务请求的情况下,从所述HDFS读取所述第二数据;
基于所述第二数据,获取分配任务状态。
13.根据权利要求11所述的方法,其特征在于,还包括:
在重启子任务的情况下,向所述子任务中多个键群的对应片组发送快照地址和恢复请求,所述恢复请求包括恢复时间节点,以使所述对应片组切换至所述恢复时间节点的快照。
14.根据权利要求10所述的方法,其特征在于,还包括:
基于预设的时间间隔,遍历记录的所述第二数据,并从中确定待删除的第二数据;
基于所述待删除的第二数据,获取所述待删除的第二数据的对应片组;
发送删除请求至所述Key-Value存储装置,以使所述Key-Value存储装置删除所述对应片组的第二数据。
15.一种数据处理装置,其特征在于,包括:
任务接收模块,用于接收任务请求;
任务执行模块,用于调用远程API从远端Key-Value存储装置获取第一数据,根据获取的第一数据执行所述任务请求,并将产生的第二数据存储至所述Key-Value存储装置。
16.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求6-14中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求6-14中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211492989.3A CN115757421A (zh) | 2022-11-25 | 2022-11-25 | 数据处理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211492989.3A CN115757421A (zh) | 2022-11-25 | 2022-11-25 | 数据处理系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757421A true CN115757421A (zh) | 2023-03-07 |
Family
ID=85338226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211492989.3A Pending CN115757421A (zh) | 2022-11-25 | 2022-11-25 | 数据处理系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757421A (zh) |
-
2022
- 2022-11-25 CN CN202211492989.3A patent/CN115757421A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9276959B2 (en) | Client-configurable security options for data streams | |
US9858322B2 (en) | Data stream ingestion and persistence techniques | |
US9720989B2 (en) | Dynamic partitioning techniques for data streams | |
CA2930026C (en) | Data stream ingestion and persistence techniques | |
US9794135B2 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
CA2930101C (en) | Partition-based data stream processing framework | |
US20190243688A1 (en) | Dynamic allocation of worker nodes for distributed replication | |
KR101930117B1 (ko) | 비휘발성 스토리지 장치 세트의 휘발성 메모리 표현 기법 | |
US11157445B2 (en) | Indexing implementing method and system in file storage | |
US20230384932A1 (en) | Electronic storage system | |
CN107528871B (zh) | 存储系统中的数据分析 | |
CN110806942A (zh) | 数据处理的方法和装置 | |
CN111338930A (zh) | 一种基于多进程多租户的自动化测试系统及方法 | |
CN109753245A (zh) | 一种多磁盘负载均衡异步读写调度方法及装置 | |
CN115757421A (zh) | 数据处理系统和方法 | |
US10824640B1 (en) | Framework for scheduling concurrent replication cycles | |
US11030010B2 (en) | Processing storage management request based on current and threshold processor load using request information | |
KR101754713B1 (ko) | 비대칭 분산 파일 시스템, 연산 분배 장치 및 방법 | |
CN108023914B (zh) | 一种内存数据共享系统、内存数据的写入以及读取方法 | |
CN117075823B (zh) | 对象查找方法、系统、电子设备及存储介质 | |
US11121981B1 (en) | Optimistically granting permission to host computing resources | |
Huang et al. | Disaggregated Database Management | |
CN113342853A (zh) | 流式数据处理方法和系统 | |
CN117749813A (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 |