CN115495221A - 一种数据处理系统及方法 - Google Patents
一种数据处理系统及方法 Download PDFInfo
- Publication number
- CN115495221A CN115495221A CN202211325921.6A CN202211325921A CN115495221A CN 115495221 A CN115495221 A CN 115495221A CN 202211325921 A CN202211325921 A CN 202211325921A CN 115495221 A CN115495221 A CN 115495221A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- batch
- real
- offline
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Abstract
本发明提供一种数据处理系统及方法,包括:元数据管理模块在将离线数据源和实时数据源进行注册,对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据;计算模块获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,为业务逻辑代码设置调度配置信息;将业务逻辑代码转换成与调度配置信息中的代码运行模式对应的数据处理作业;调度模块,用于将计算模块提交的数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。基于统流批逻辑元数据编写业务逻辑代码,该代码可生成各种模式下的作业,无需针对每个场景开发对应的代码,有效减少对数据处理的部署和维护的成本。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据处理系统及方法。
背景技术
随着大数据技术的发展,海量数据的存储和计算技术已相对成熟,数据的时效性逐步受到重视。当前业界主流的大数据平台均采用Lambda架构,将数据处理过程拆分为实时层和离线层,通过数据服务层对结果数据进行合并,从而实现实时数据与离线数据同时服务于在线数据应用和数据产品。
使用Lambda架构对数据进行处理时,一份数据会在离线层和实时层两条链路分别进行处理,而离线层和实时层采用的计算及存储引擎均不同,需要针对不同的应用场景所对应的模式开发不同的代码,增加了对数据进行处理的部署和维护的成本。
发明内容
有鉴于此,本发明提供一种数据处理系统及方法,本发明使用一套代码即可满足在不同场景处理的数据需求,减少对数据进行处理的部署和维护所花费的成本。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据处理系统,包括:
元数据管理模块、计算模块和调度模块;
所述元数据管理模块,用于,将所述离线数据源和所述实时数据源进行注册,并对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据;
所述计算模块,用于获取基于所述元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为所述业务逻辑代码设置调度配置信息,所述调度配置信息中包含代码运行模式,所述代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业;
所述调度模块,用于接收所述计算模块提交的数据处理作业,将所述数据处理作业分解为各个Flink任务,执行每个所述Flink任务,以对与所述Flink任务对应的业务数据进行处理。
上述的系统,可选的,所述元数据管理模块执行确定与接收到的数据处理请求对应的离线数据源和实时数据源的过程,包括:
对所述数据处理请求进行解析,确定业务类型;
基于所述业务类型确定离线数据源和实时数据源。
上述的系统,可选的,所述元数据管理模块执行对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据的过程,包括:
登记所述离线数据源中的各个离线元数据,以及登记所述实时数据源中的各个实时元数据;
确定各个交集数据对,所述交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个所述交集数据对中确定目标数据对;
对于每个所述目标数据对,将该目标数据对中所述实时元数据和所述离线元数据相同的字段均确定为目标字段,并将目标字段在所述实时元数据中的内容以及在所述离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到所述目标数据对所对应的流批逻辑元数据。
上述的系统,可选的,所述计算模块执行将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业的过程,包括:
当所述代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;
当所述代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;
当所述代码运行模式为流批混合模式时,基于所述流调度配置生成第二流处理作业,以及基于所述批调度配置生成第二批处理作业,并将所述第二流处理作业和所述第二批处理作业均确定为数据处理作业。
上述的系统,可选的,所述调度模块,用于:
对于每个所述Flink任务,在预设的集群中为所述Flink任务分配资源调度单元,并应用所述资源调度单元执行所述Flink任务。
一种数据处理方法,应用于数据处理系统,所述数据处理系统包括元数据管理模块、计算模块和调度模块,所述方法包括:
所述元数据处理模块确定与接收到的数据处理请求对应的离线数据源和实时数据源,将所述离线数据源和所述实时数据源进行注册,并对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据;
所述计算模块获取基于所述元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为所述业务逻辑代码设置调度配置信息,所述调度配置信息中包含代码运行模式,所述代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业;
所述调度模块接收所述计算模块提交的数据处理作业,将所述数据处理作业分解为各个Flink任务,执行每个所述Flink任务,以对与所述Flink任务对应的业务数据进行处理。
上述的方法,可选的,所述确定与接收到的数据处理请求对应的离线数据源和实时数据源,包括:
对所述数据处理请求进行解析,确定业务类型;
基于所述业务类型确定离线数据源和实时数据源。
上述的方法,可选的,所述对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据,包括:
登记所述离线数据源中的各个离线元数据,以及登记所述实时数据源中的各个实时元数据;
确定各个交集数据对,所述交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个所述交集数据对中确定目标数据对;
对于每个所述目标数据对,将该目标数据对中所述实时元数据和所述离线元数据相同的字段均确定为目标字段,并将目标字段在所述实时元数据中的内容以及在所述离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到所述目标数据对所对应的流批逻辑元数据。
上述的方法,可选的,所述将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业,包括:
当所述代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;
当所述代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;
当所述代码运行模式为流批混合模式时,基于所述流调度配置生成第二流处理作业,以及基于所述批调度配置生成第二批处理作业,并将所述第二流处理作业和所述第二批处理作业均确定为数据处理作业。
上述的方法,可选的,所述执行每个所述Flink任务,包括:
对于每个所述Flink任务,在预设的集群中为所述Flink任务分配资源调度单元,并应用所述资源调度单元执行所述Flink任务。
与现有技术相比,本发明具有以下优点:
本发明提供一种数据处理系统及方法,该系统包括元数据管理模块、计算模块和调度模块;元数据管理模块,用于确定与接收到的数据处理请求对应的离线数据源和实时数据源,将离线数据源和所述实时数据源进行注册,并对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据;计算模块,用于获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式,代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将业务逻辑代码转换成与代码运行模式对应的数据处理作业;调度模块,用于接收计算模块提交的数据处理作业,将数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。本发明通过基于统一的流批逻辑元数据编写的业务逻辑代码,该业务逻辑代码支持转换成不同场景处理数据时应用的任务,由此无需开发多套代码,降低对数据进行处理的部署和维护花费的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种数据处理系统的结构示意图;
图2为本发明实施例提供的一种数据处理框架示例图;
图3为本发明实施例提供的元数据管理模块映射数据的场景示例图;
图4为本发明实施例提供的一种数据处理方法的流程示例图;
图5为本发明实施例提供的Kubernetes调度模块的工作流程示例图;
图6为本发明实施例提供的一种数据处理方法的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
术语解释:
Hive:一个实时大数据处理框架,目标是设计出一个能满足实时大数据系统关键特性的架构,包括高容错、低延时和可扩展等。
Spark:Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。
Spark Streaming:Spark Streaming构建在Spark上的低延迟执行引擎。
HBase:HBase是一个分布式的、面向列的开源数据库,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
Presto:Presto是Facebook开发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。
OLAP:联机分析处理OLAP是一种软件技术,可以使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
Lambda:一个实时大数据处理框架,可以设计出一个能满足实时大数据系统关键特性的架构,包括高容错、低延时和可扩展等。
Flink:是由Apache软件基金会开发的开源流处理框架,以数据并行和流水线方式执行任意流数据程序,其流水线运行时系统可以执行批处理和流处理程序。
SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
Kubernetes:是开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
Pod:是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。
Kubernetes Master:容器集群的控制中心,包括资源的调度,将容器分配到合适的节点上运行;对集群状态的进行管理,包括自动对容器进行修复、扩缩容等。
Flink JobManager:是flink集群中任务管理和调度的核心,控制应用执行的主进程,每个应用都应该被唯一的Job manager所控制执行。
JobMaster:JobManager中最核心的组件,负责处理单独的作业。所以JobMaster和具体的Job是一一对应的,多个Job可以同时运行在一个Flink集群中,每个Job都有一个自己的JobMaster。
Slot:是资源调度的最小单位,包含了机器用来执行计算的一组CPU和内存资源每一个任务都需要分配到一个Slot上执行。
ResourceManager:主要负责资源的分配和管理,向TaskManage分配任务槽。
Dispatcher:主要负责提供接口,用来提交应用,并且负责为每一个新提交的作业启动一个新的JobMaster组件。
TaskManager:是Flink中的工作进程,数据流的具体计算就是它来做的。Flink集群中必须至少有一个TaskManager;当然由于分布式计算的考虑,通常会有多个TaskManager运行,每一个TaskManager都包含了一定数量的Slot。TaskManager会向资源管理器注册它的Slot,收到资源管理器的指令后,TaskManager就会将一个或者多个槽位提供给JobMaster调用,JobMaster就可以分配任务来执行了。在执行过程中,TaskManager可以缓冲数据,还可以跟其他运行同一应用的TaskManager交换数据。
随着大数据技术的发展,海量数据的存储和计算技术已相对成熟,数据的时效性逐步受到重视。当前业界主流的大数据平台均采用Lambda架构,将数据处理过程拆分为实时层和离线层,通过数据服务层对结果数据进行合并,从而实现实时数据与离线数据同时服务于在线数据应用和数据产品。
Lambda架构的实现方式是将数据以追加的方式并行写到批和流处理系统内,然后将相同的计算逻辑分别在流和批系统中实现,并且在查询阶段合并流和批的计算视图并展示给用户。Lambda架构下典型的数据处理流程如下:
1)所有的数据需要分别写入批处理层和流处理层。
2)批处理层负责如下两方面:a、存储数据集,这是一个不变的持续增长的数据集;b、针对数据集进行预运算。
3)服务层对批计算的结果建立索引,以支持低延迟、即系查询。
4)流计算层作为速度层,对数据进行实时计算,作为高延迟批计算的补偿快速视图。
5)所有的查询需要对并批计算和流计算的结果进行合并。
批计算层能够很好的处理离线数据,但是在很多场景数据不断产生,并且业务场景需要实时查询。流计算层用来处理增量实时数据,流计算层处理的数据是最近的增量数据流,增量计算所以延迟小;批计算处理的是全体数据集,耗时比较长。
由上述的内容可知,Lambda架构采用流、批结合的方式对历史数据、实时数据分别进行处理,存在如下几个问题:
1)数据不一致问题
在Lambda架构的数据处理过程中,一份数据会在离线层和实时层两条链路分别进行处理,但是离线层和实时层采用的计算及存储引擎均不同,会导致同一份源数据处理结果不一致。同时,对接数据服务之前需要实时处理数据与离线处理数据进行合并,在此过程中需要不断地进行数据结构的重新定义、转储、变化、合并,都会带来数据不一致的问题。
2)运维成本高
Lambda会引入多种计算引擎产品,如批处理层通常引入Hive、Spark等,流处理层通常引入Flink、Spark Streaming等产品。数据处理后会写入到存储,数据服务层引入的产品可能会更加复杂,例如为了提供高效的点查询引入HBase;为了对离线数仓中的数据进行交互式分析,会引入Presto等,采用Lambda架构会导致系统架构复杂、运维成本高。
为了解决上述的问题,本发明提供一种数据处理系统及方法,映月宫本发明提供的方案,无需针对每种应用场景开发对应的业务处理逻辑的代码,由此减少开发运维成本,提高数据处理效率。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
参照图1,为本发明实施例提供的一种数据处理系统的结构示意图,该系统包括元数据管理模块101、计算模块102以及调度模块103。
元数据管理模块101,用于确定与接收到的数据处理请求对应的离线数据源和实时数据源,将离线数据源和实时数据源进行注册,并对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据。
数据处理请求可以为用户向数据处理系统发送的请求,该请求用于触发数据处理系统对数据进行处理。
用户可以使用与数据处理系统进行交互的设备向数据处理系统发送数据处理请求,还可以通过数据处理系统的输入设备输入数据处理请求。
数据处理系统在获取到用户发送的数据处理请求后,将该数据处理请求传送至元数据管理模块,使得元数据管理模块确定与数据处理请求对应的离线数据源和实时数据源,具体如:对数据处理请求进行解析,确定业务类型;基于业务类型确定离线数据源和实时数据源。进一步的,业务类型可以是用户需要处理的数据具体所属的业务的类型,不同的业务类型所应用的数据源是不同的,可将业务类型涉及到的各个离线数据源均确定为与数据处理请求对应的离线数据,以及将业务类型涉及到的各个实时数据源均确定为与数据处理请求对应的离线数据。示例性的,实时数据源可以为存储Kafka消息队列的数据库,离线数据源可以为业务数据库Mysql、Oracle。
进一步的,元数据管理模块在确定离线数据源和实时数据源后,将离线数据源和实时数据源进行注册,注册的方式如登记数据库的连接信息,例如数据库IP地址、端口、用户名以及密码等。
元数据管理模块在对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据时,具体如:
登记离线数据源中的各个离线元数据,以及登记实时数据源中的各个实时元数据;
确定各个交集数据对,交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个交集数据对中确定目标数据对;
对于每个目标数据对,将该目标数据对中实时元数据和离线元数据相同的字段均确定为目标字段,并将目标字段在实时元数据中的内容以及在离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到目标数据对所对应的流批逻辑元数据。
需要说明的是,将存在相同的字段的实时元数据和离线元数据确定为交集数据对,此处的交集数据对可以为多个,进一步的,实时元数据和离线元数据中相同的字段可以称为交集字段。
数据处理请求中包含用户选择的处理数据时需要使用的字段的信息,例如字段名或是标识等,优选的,用户选择的字段均为交集字段。
优选的,预先创建的流批逻辑元数据表中包含字段名、字段类型等多项信息;对于每个目标数据对,将目标数据对中的内容映射到流批逻辑元数据表中,即可得到对应的流批逻辑元数据,映射过程如:确定用户选择的字段,并将该字段在离线元数据中的内容映射至流批逻辑元数据表中,以及将该字段在实时元数据中的内容映射至流批元数据表中,由此得到该交集数据对所应的流批逻辑元数据。进一步的,在进行数据映射时,可以自动映射,也可以手动映射。
计算模块102,用于获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式,代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将业务逻辑代码转换成与代码运行模式对应的数据处理作业。
元数据管理模块在生成流批逻辑元数据后,可以将流批逻辑元数据向用户展示,使得用户基于流批逻辑元数据编写业务逻辑代码,并将并将编辑好的业务逻辑代码提供给数据处理系统中的计算模块,计算模块还为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式和模式调度信息,优选的,模式调度信息中包含了两套调度信息,分别为批调度信息和流调度信息,流调度信息中包含了并行度、数据倾斜处理方式等,批调度信息中包含了批次周期、任务的依赖关系等。
不同代码运行模式生成的数据处理作业是不同的,示例性的,当代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;当代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;当代码运行模式为流批混合模式时,基于流调度配置生成第二流处理作业,以及基于批调度配置生成第二批处理作业,并将第二流处理作业和所述第二批处理作业均确定为数据处理作业。
需要说明的是,纯流模式时,对数据进行流处理,纯批模式时,对数据进行批处理,流批混合模式时,对数据进行流处理和批处理。
进一步的,流批混合模式时,需要生成两个作业,从而同时支持对数据的流处理和批处理。
调度模块103,用于接收计算模块提交的数据处理作业,将数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。
调度模块在执行每个Flink任务时,具体过程可以为:对于每个Flink任务,在预设的集群中为Flink任务分配资源调度单元,并应用资源调度单元执行Flink任务。优选地,在每个Flink任务执行完成后,需要将资源调度单元释放。
本发明实施例提供的数据处理系统中,该系统包括元数据管理模块、计算模块和调度模块,元数据管理模块在将离线数据源和实时数据源进行注册后,对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据;计算模块获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式,代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将业务逻辑代码转换成与代码运行模式对应的数据处理作业;调度模块,用于接收计算模块提交的数据处理作业,将数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。基于统一的流批逻辑元数据编写业务逻辑代码,该业务逻辑代码支持在各种模式下生成对应的作业,无需针对每个场景开发对应的代码,有效减少开发成本,并且有效减少对数据处理时进行部署和维护所花费的成本。
参照图2,为本发明实施例提供的一种数据处理框架示例图,该图中包含数据源、批流一体计算框架、服务层以及应用层;进一步的,批流一体计算框架可以用于组建数据处理系统;批流一体计算框架包含元数据管理模块、Flink计算模块以及Kubernetes调度模块;优选的,批流一体计算框架中的元数据管理模块等于本发明的数据处理系统中的元数据管理模块,批流一体计算框架中的Flink计算模块相当于本发明的数据处理系统中的计算模块,批流一体计算框架中的Kubernetes调度模块相当于本发明的数据处理系统中的调度模块。图中的数据源包含但不限于日志服务器、业务数据库等,批流一体计算框架对数据源中的数据进行处理后保存至服务层中的统一存储层,统一存储层中保存的数据用于为应用层中的各种功能提供服务,例如应用层中的点查询、计息查询以及分析性查询等。
由于原始的数据源中的实时数据与离线数据的元数据不是完全一致的,在字段名、字段类型都会存在差异,而只有具备统一的元数据,才能基于Flink进行统一的业务逻辑编写,并且输出到统一的存储层中,由此,需要通过元数据管理模块,将实时数据、离线数据的交集字段进行镜像,映射为统一的流批逻辑元数据。
参照图3,为本发明实施例提供的元数据管理模块映射数据的场景示例图,图中的实时元数据和离线元数据为交集数据对,由图可知,实时元数据和离线元数据中存在相同的字段分别有字段1、字段2、字段3以及字段4,将实时元数据的字段1的内容以及离线元数据的字段1的内容均映射至流批逻辑元数据表的字段1中,将实时元数据的字段2的内容以及离线元数据的字段2的内容均映射至流批逻辑元数据表的字段2中,将实时元数据的字段3的内容以及离线元数据的字段2的内容均映射至流批逻辑元数据表的字段3中,将实时元数据的字段4的内容以及离线元数据的字段4的内容均映射至流批逻辑元数据表的字段4中,从而得到该交集数据对所对应的流批逻辑元数据。
需要说明的是,本发明支持两种映射方式:一、自动映射,根据元数据的字段名、字段类型,将实时元数据与离线元数据中相同的字段自动映射到流批逻辑元数据中;二、手工映射,通过在操作界面连线的方式,人工选择字段映射到流批逻辑元数据中。
本发明实施例提供的系统中,在Flink架构上,在最上层的SQL接口统一的。在完成流批逻辑元数据的映射后,只需要进行业务逻辑的设计即可。针对实时数据、离线数据可采用统一的一套业务逻辑代码,由Flink引擎完成会根据映射规则,针对不同的数据源分别进行翻译,将业务逻辑代码逻辑翻译成与DataStream对应或是和DataSet对应的底层实现方法的作业。
参照图4,为本发明实施例提供的一种数据处理方法的流程示例图,具体如:先登记数据源信息,对需要使用的源端数据库进行登记。流批逻辑表中进行元数据映射,将实时数据源、离线数据源的元数据表进行映射,生产流批逻辑元数据。编写业务逻辑代码,即图中的SQL业务逻辑,该代码用于对源端的数据进行加工处理,计算出业务指标。配置调度信息,配置作业所需要的资源,1个DCU默认为1c4g,可以根据用户在平台的资源、业务需求进行配置。同时,离线调度配置还需要配置执行周期,代表多长时间内处理一批次的数据。实时调度无此配置,作业常驻运行。最后提交作业给调度模块执行,调度模块在执行完毕后将数据保存在统一存储层。
进一步的,在完成业务逻辑的编写之后,需要完成调度相关配置。流调度的配置包括并行度、数据倾斜处理方式、偏移点位等,批调度的配置包括批次周期、依赖等。完成配置信息的设置之后,同一套SQL业务逻辑可以通过自定义开启配置实现三种运行模式:一、纯流模式,只针对实时数据源进行数据处理;二、纯批模式,只针对离线数据源进行;三、流批混合模式:同时处理实时与离线数据源。SQL不代表Flink真正的执行态,同一套SQL支持面向两套调度配置,可以根据业务场景,支持在几种模式之间进行灵活切换。
流模式写入存储层当天分区表,批模式写入存储层历史分区表,在存储层进行统一的汇总,应用层无需关心是否属于流还是批模式。
图2中的Kubernetes调度模块负责接收流批一体计算模块提交的作业,在Kubernetes集群中自动创建Flink任务,任务结束后可自动释放资源。
参照图5,为本发明实施例提供的Kubernetes调度模块的工作流程示例图,具体如:
步骤1、调度执行机连接容器集群Kubernetes Master,提交Flink集群的资源描述文件。
步骤2、Kubernetes Master根据资源描述文件去创建对应的容器实体,集群中的某个节点收到请求后,会从镜像仓库下载Flink镜像文件,准备和挂载磁盘,然后执行启动命令,生成Flink JobManager这个容器POD,POD中会有两个进程:Dispacher和ResourceManager。优选的,在完成了步骤1和步骤2后,整个Flink集群就启动完毕,可以接受具体的任务请求。
步骤3、调度执行机会将用户作业包提交给Flink集群的Dispatcher。
步骤4、Dispatcher会生成一个JobMaster,开始启动接收到的新任务。
步骤5、JobMaster向ResourceManager请求Slot。
步骤6、ResourceManager从Kubernetes集群分配TaskManager。
步骤7、Kubernetes集群分配一个新的Pod后,在上面启动TaskManager。
步骤8、TaskManager启动后注册到ResourceManager。
步骤9、ResourceManager向TaskManager请求Slot。
步骤10、TaskManager提供Slot给JobMaster。至此,任务就会被分配到这个Slot上运行。
通过上述流程,Kubernetes调度单元接收到的数据处理作业就已完成资源分配并且开始正式运行。
同时,在具体的任务调度上,批处理类型的数据处理作业和流处理类型的数据处理作业有一些不同。批处理类型的数据处理作业的多个任务并不需要同时在线,可以根据依赖关系先调度一批任务,等它们结束后再运行另一批。相反地,流处理类型的数据处理作业的所有任务需要在作业启动的时候就全部被调度,然后才可以开始处理数据。前一种调度策略通常称为懒调度,后一种通常称为激进调度。为了实现流批一体,在Flink自身的任务调度中需同时支持这两种调度模式。
本发明实施例提供的数据处理系统中,通过使用可以生成流批逻辑元数据的元数据管理模块,实现对实时数据、离线数据的统一纳管,保证Flink流批一体业务逻辑设计能够有效进行,还采用Flink SQL流批一体的特性,实现业务逻辑按照一套代码进行设计,并且基于Kubernetes进行Flink作业调度管理,实现Flink任务的自动分配与释放,实现了一套元数据、一套SQL语句进行设置,解决了传统Lambda架构中出现的数据一致性问题,有效避免实时数据、离线数据分层计算后出现异常数据后排查过程复杂、数据修订和补数周期长等问题,并且同时Flink计算集群由Kubernets自动进行创建、资源分配和回收,用户无需承担集群部署和管理工作,无需维护多套不同的计算引擎产品,减轻了运维技术复杂度,极大的提升了运维效率。
参照图6,为本发明实施例提供的一种数据处理方法的方法流程图,该方法应用于数据处理系统,该数据处理系统包括元数据处理模块、计算模块和调度模块,该方法的具体说明如下所述:
S101、元数据处理模块确定与接收到的数据处理请求对应的离线数据源和实时数据源,将离线数据源和实时数据源进行注册,并对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据。
确定与接收到的数据处理请求对应的离线数据源和实时数据源的过程,具体为:对数据处理请求进行解析,确定业务类型;基于业务类型确定离线数据源和实时数据源。
对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据的过程,具体为:
登记离线数据源中的各个离线元数据,以及登记实时数据源中的各个实时元数据;
确定各个交集数据对,交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个交集数据对中确定目标数据对;
对于每个目标数据对,将该目标数据对中实时元数据和离线元数据相同的字段均确定为目标字段,并将目标字段在实时元数据中的内容以及在离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到目标数据对所对应的流批逻辑元数据。
S102、计算模块获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式,代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将业务逻辑代码转换成与代码运行模式对应的数据处理作业。
将业务逻辑代码转换成与代码运行模式对应的数据处理作业的过程,包括:
当代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;
当代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;
当代码运行模式为流批混合模式时,基于流调度配置生成第二流处理作业,以及基于批调度配置生成第二批处理作业,并将第二流处理作业和第二批处理作业均确定为数据处理作业。
S103、调度模块接收计算模块提交的数据处理作业,将数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。
执行每个Flink任务的过程如:对于每个Flink任务,在预设的集群中为Flink任务分配资源调度单元,并应用资源调度单元执行Flink任务。
本发明实施例提供的方法中,元数据管理模块在将离线数据源和实时数据源进行注册后,对离线数据源和实时数据源中的数据进行映射处理,生成流批逻辑元数据;计算模块获取基于元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为业务逻辑代码设置调度配置信息,调度配置信息中包含代码运行模式,代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将业务逻辑代码转换成与代码运行模式对应的数据处理作业;调度模块,用于接收计算模块提交的数据处理作业,将数据处理作业分解为各个Flink任务,执行每个Flink任务,以对与Flink任务对应的业务数据进行处理。基于统一的流批逻辑元数据编写业务逻辑代码,该业务逻辑代码支持在各种模式下生成对应的作业,无需针对每个场景开发对应的代码,有效减少开发成本,并且有效减少对数据处理时进行部署和维护所花费的成本。
本发明实施例提供的方法中,基于一套流批逻辑元数据,开发一套SQL代码,该代码可支持对应的离线业务的数据处理以及实时业务的数据处理,由此无需开发多套代码,并且本发明的计算引擎层也由Flink统一承担,减小开发运维成本,提升数据处理效率。
本发明实施例提供的数据处理方法的具体说明可参考上文中关于数据处理系统的说明,此处不再进行赘述。上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据处理系统,其特征在于,包括:
元数据管理模块、计算模块和调度模块;
所述元数据管理模块,用于确定与接收到的数据处理请求对应的离线数据源和实时数据源,将所述离线数据源和所述实时数据源进行注册,并对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据;
所述计算模块,用于获取基于所述元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为所述业务逻辑代码设置调度配置信息,所述调度配置信息中包含代码运行模式,所述代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业;
所述调度模块,用于接收所述计算模块提交的数据处理作业,将所述数据处理作业分解为各个Flink任务,执行每个所述Flink任务,以对与所述Flink任务对应的业务数据进行处理。
2.根据权利要求1所述的系统,其特征在于,所述元数据管理模块执行确定与接收到的数据处理请求对应的离线数据源和实时数据源的过程,包括:
对所述数据处理请求进行解析,确定业务类型;
基于所述业务类型确定离线数据源和实时数据源。
3.根据权利要求1所述的系统,其特征在于,所述元数据管理模块执行对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据的过程,包括:
登记所述离线数据源中的各个离线元数据,以及登记所述实时数据源中的各个实时元数据;
确定各个交集数据对,所述交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个所述交集数据对中确定目标数据对;
对于每个所述目标数据对,将该目标数据对中所述实时元数据和所述离线元数据相同的字段均确定为目标字段,并将目标字段在所述实时元数据中的内容以及在所述离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到所述目标数据对所对应的流批逻辑元数据。
4.根据权利要求1所述的系统,其特征在于,所述计算模块执行将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业的过程,包括:
当所述代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;
当所述代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;
当所述代码运行模式为流批混合模式时,基于所述流调度配置生成第二流处理作业,以及基于所述批调度配置生成第二批处理作业,并将所述第二流处理作业和所述第二批处理作业均确定为数据处理作业。
5.根据权利要求1所述的系统,其特征在于,所述调度模块,用于:
对于每个所述Flink任务,在预设的集群中为所述Flink任务分配资源调度单元,并应用所述资源调度单元执行所述Flink任务。
6.一种数据处理方法,其特征在于,应用于数据处理系统,所述数据处理系统包括元数据管理模块、计算模块和调度模块,所述方法包括:
所述元数据处理模块确定与接收到的数据处理请求对应的离线数据源和实时数据源,将所述离线数据源和所述实时数据源进行注册,并对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据;
所述计算模块获取基于所述元数据管理模块中的流批逻辑元数据编写的业务逻辑代码,并为所述业务逻辑代码设置调度配置信息,所述调度配置信息中包含代码运行模式,所述代码运行模式为纯流模式、纯批模式以及流批混合模式中的其中一种;将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业;
所述调度模块接收所述计算模块提交的数据处理作业,将所述数据处理作业分解为各个Flink任务,执行每个所述Flink任务,以对与所述Flink任务对应的业务数据进行处理。
7.根据权利要求6所述的方法,其特征在于,所述确定与接收到的数据处理请求对应的离线数据源和实时数据源,包括:
对所述数据处理请求进行解析,确定业务类型;
基于所述业务类型确定离线数据源和实时数据源。
8.根据权利要求6所述的方法,其特征在于,所述对所述离线数据源和所述实时数据源中的数据进行映射处理,生成流批逻辑元数据,包括:
登记所述离线数据源中的各个离线元数据,以及登记所述实时数据源中的各个实时元数据;
确定各个交集数据对,所述交集数据对由存在相同字段的实时元数据和离线元数据组成;
在各个所述交集数据对中确定目标数据对;
对于每个所述目标数据对,将该目标数据对中所述实时元数据和所述离线元数据相同的字段均确定为目标字段,并将目标字段在所述实时元数据中的内容以及在所述离线元数据中的内容均映射至预先创建的流批逻辑元数据表中,得到所述目标数据对所对应的流批逻辑元数据。
9.根据权利要求6所述的方法,其特征在于,所述将所述业务逻辑代码转换成与所述代码运行模式对应的数据处理作业,包括:
当所述代码运行模式为纯流模式时,基于预设的流调度配置生成第一流处理作业,并将该第一流处理任务确定为数据处理作业;
当所述代码运行模式为纯批模式时,基于预设的批调度配置生成第一批处理作业,并将该第一批处理作业确定为数据处理作业;
当所述代码运行模式为流批混合模式时,基于所述流调度配置生成第二流处理作业,以及基于所述批调度配置生成第二批处理作业,并将所述第二流处理作业和所述第二批处理作业均确定为数据处理作业。
10.根据权利要求6所述的方法,其特征在于,所述执行每个所述Flink任务,包括:
对于每个所述Flink任务,在预设的集群中为所述Flink任务分配资源调度单元,并应用所述资源调度单元执行所述Flink任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211325921.6A CN115495221A (zh) | 2022-10-27 | 2022-10-27 | 一种数据处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211325921.6A CN115495221A (zh) | 2022-10-27 | 2022-10-27 | 一种数据处理系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115495221A true CN115495221A (zh) | 2022-12-20 |
Family
ID=85115087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211325921.6A Pending CN115495221A (zh) | 2022-10-27 | 2022-10-27 | 一种数据处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495221A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370400A (zh) * | 2023-12-05 | 2024-01-09 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
CN117435596A (zh) * | 2023-12-20 | 2024-01-23 | 杭州网易云音乐科技有限公司 | 流批任务一体化方法、装置、存储介质及电子设备 |
CN117724706B (zh) * | 2024-02-06 | 2024-05-03 | 湖南盛鼎科技发展有限责任公司 | 批流一体流程化实时处理异构平台海量数据的方法及系统 |
-
2022
- 2022-10-27 CN CN202211325921.6A patent/CN115495221A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370400A (zh) * | 2023-12-05 | 2024-01-09 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
CN117370400B (zh) * | 2023-12-05 | 2024-02-13 | 民航成都信息技术有限公司 | 航空数据的加工聚合处理方法、装置、电子设备及介质 |
CN117435596A (zh) * | 2023-12-20 | 2024-01-23 | 杭州网易云音乐科技有限公司 | 流批任务一体化方法、装置、存储介质及电子设备 |
CN117435596B (zh) * | 2023-12-20 | 2024-04-02 | 杭州网易云音乐科技有限公司 | 流批任务一体化方法、装置、存储介质及电子设备 |
CN117724706B (zh) * | 2024-02-06 | 2024-05-03 | 湖南盛鼎科技发展有限责任公司 | 批流一体流程化实时处理异构平台海量数据的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119311B (zh) | 一种基于fpga的分布式流计算系统加速方法 | |
Kulkarni et al. | Survey on Hadoop and Introduction to YARN. | |
US8205208B2 (en) | Scheduling grid jobs using dynamic grid scheduling policy | |
CN115495221A (zh) | 一种数据处理系统及方法 | |
US11061895B2 (en) | Adaptive granule generation for parallel queries with run-time data pruning | |
Safaei | Real-time processing of streaming big data | |
CN104050042B (zh) | Etl作业的资源分配方法及装置 | |
US20080172673A1 (en) | Prediction based resource matching for grid environments | |
US20100077403A1 (en) | Middleware for Fine-Grained Near Real-Time Applications | |
CN101715001A (zh) | 一种控制网格任务执行的方法 | |
CN102567312A (zh) | 一种基于分布式并行计算框架的机器翻译方法 | |
Zhao et al. | ESQP: an efficient SQL query processing for cloud data management | |
Bergui et al. | A survey on bandwidth-aware geo-distributed frameworks for big-data analytics | |
Acevedo et al. | A Critical Path File Location (CPFL) algorithm for data-aware multiworkflow scheduling on HPC clusters | |
Liu et al. | Brps: A big data placement strategy for data intensive applications | |
CN116450355A (zh) | 一种多集群模型训练方法、装置、设备及介质 | |
Wang et al. | A survey of system scheduling for hpc and big data | |
CN111506407B (zh) | Pull模式与Push模式相结合的资源管理与作业调度方法、系统 | |
Liu | A Programming Model for the Cloud Platform | |
CN112540858B (zh) | 任务处理方法、服务器、客户端及系统 | |
Zhang et al. | Artificial intelligence platform for mobile service computing | |
Babu et al. | Dynamic colocation algorithm for Hadoop | |
Gunasekaran et al. | Dynamic scheduling algorithm for reducing start time in Hadoop | |
Holland et al. | Distributing an SQL Query over a Cluster of Containers | |
Castellanos-Rodríguez et al. | Serverless-like platform for container-based YARN clusters |
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 |