CN111966943A - 流式数据分发方法和系统 - Google Patents
流式数据分发方法和系统 Download PDFInfo
- Publication number
- CN111966943A CN111966943A CN202010813141.0A CN202010813141A CN111966943A CN 111966943 A CN111966943 A CN 111966943A CN 202010813141 A CN202010813141 A CN 202010813141A CN 111966943 A CN111966943 A CN 111966943A
- Authority
- CN
- China
- Prior art keywords
- data
- downstream node
- partition
- module
- streaming
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种流式数据分发方法,用于数据分发层的计算机设备中,所述方法包括:消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;监测所述数据流关联的分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。本申请实施例设置有分区感应机制,以及时主动提供数据流的分区感应消息。相对于传统技术中的通过定时脚本检测分区信息,分区感应机制可以节省计算性能。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种流式数据分发方法、装置、计算机设备、计算机可读存储介质以及流式数据分发系统。
背景技术
当前的流式数据传输系统一般由数据传输层(如网关)、数据缓存层、数据分发层(controller)和数据存储终端构成。当数据源有数据上报时,所述数据源会将上报数据经由数据传输层、所述数据缓存层、所述数据分发层最终流入到所述数据存储终端。
然而,现有的数据分发层采用Flume架构,不同数据流之间容易相互影响。且,经数据分发层流入到数据存储终端的数据需要通过定时脚本检测数据分区信息,耗费计算性能。
发明内容
本申请实施例的目的是提供一种流式数据分发方法、装置、计算机设备、计算机可读存储介质及流式数据分发系统,可以用于解决以下问题:(1)采用Flume架构导致的数据流相互影响;(2)经数据分发层流入到数据存储终端的数据需要通过定时脚本检测数据分区信息,耗费计算性能。
本申请实施例的一个方面提供了一种流式数据分发系统,包括一个或多个Flink集群,每个Flink集群用于:消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;监测所述数据流关联的分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,每个Flink集群包括任务执行者和任务部署者;所述任务执行者包括多个数据输入模块、多个数据处理模块、多个数据输出模块,以及分区消息提交模块;其中,所述分区消息提交模块用于:获取各个数据输出模块中的数据的水印,并找到最小水印;根据所述最小水印生成所述分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,其特征在于,所述分区消息提交模块还用于:向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
可选的,每个数据输入模块用于:消费相应的数据流;将所述相应的数据流的水印上报到所述任务部署者中,以便所述任务部署者生成速度控制指令;接收所述速度控制指令;及根据所述速度控制指令,控制对所述相应的数据流的消费速度,以和其他数据输入模块中的其他数据流的消费速度保持一致,以便所述下游节点每次获取一个时间窗口内的所有数据。
可选的,每个数据处理模块包括解析模块、ETL模块和适配模块,其中:所述解析模块,用于对相应的数据流进行解析操作,以得到解析后的数据;所述ETL模块,用于根据所述相应的数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;所述适配模块,用于将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
可选的,每个数据输出模块用于:根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
本申请实施例的再一个方面提供了一种流式数据分发方法,用于数据分发层的计算机设备中,所述方法包括:消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;监测所述数据流关联的分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,还包括:生成所述数据流的水印;将所述水印上报至任务部署者,以便所述任务部署者根据所述水印生成速度控制指令任务部署者任务部署者;接收所述速度控制指令;及根据所述速度控制指令,控制所述数据流的消费速度。
可选的,还包括:对所述数据流进行解析操作,以得到解析后的数据;根据所述数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
可选的,所述计算机设备为或位于Flink集群中;将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务,还包括:获取所述Flink集群中与所述数据流关联的所有水印,并找到最小水印;根据所述最小水印生成所述分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,还包括:向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
可选的,还包括:根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
本申请实施例的再一个方面提供了一种流式数据分发装置,所述装置包括:消费模块,用于消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;监测模块,用于监测所述数据流关联的分区感应消息;及下发模块,用于将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
本申请实施例的再一个方面提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行上述计算机程序时用于实现如上任一项所述的流式数据分发方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时用于实现如上任一项所述的流式数据分发方法的步骤。
本申请实施例提供的流式数据分发方法、装置、计算机设备、计算机可读存储介质及流式数据分发系统具有以下优势:(1)将Flink架构引入到流式数据分发系统中,可以避免不同数据流之间的相互影响。(2)设置有分区感应机制,以及时主动提供数据流的分区感应消息。相对于传统技术中的通过定时脚本检测分区信息,分区感应机制可以节省计算性能。
附图说明
图1示意性示出了流式数据传输链路的链路图;
图2示意性示出了根据本申请实施例一的流式数据分发系统的环境示意图;
图3示意性示出了分区感应的示意图;
图4示意性示出了分区分片的示意图;
图5示意性示出了Transform的工作流程示意图;
图6示意性示出了适配协议与类型的示意图;
图7示意性示出了动态分配分区的示意图;
图8示意性示出了根据本申请实施例二的流式数据分发方法的流程图;
图9示意性示出了根据本申请实施例二的流式数据分发方法的新增流程图;
图10示意性示出了根据本申请实施例二的流式数据分发方法的新增流程图;
图11为图8中步骤S804的子流程图;
图12示意性示出了根据本申请实施例二的流式数据分发方法的新增流程图;
图13示意性示出了根据本申请实施例二的流式数据分发方法的新增流程图;
图14示意性示出了根据本申请实施例三的流式数据分发装置的框图;以及
图15示意性示出了根据本申请实施例四的适于实现流式数据分发方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请涉及到的一些术语解释:
Flink集群(Flink Cluster),是一个分布式系统,用于对无界和有界数据流进行有状态计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
任务部署者(JobManager),作为Flink集群的Master节点(主节点),负责Flink集群任务调度以及资源管理。
任务执行者(TaskManager),作为Flink集群的Worker节点(从属节点)。TaskManager从JobManager接收需要部署的任务,负责具体的任务执行和对应任务在每个节点上的资源申请和管理。
数据输入模块(Source),作为数据输入接口,用于从数据缓存层3中相应的主题(Topic)下消费一个或多个数据流。
数据处理模块(Tranform),用于对Source接收到的一个或多个数据流进行数据处理。
数据输出模块(Sink),作为数据输出接口,用于将经过Tranform处理后得到的数据分到数据存储层5的存储终端。
分区消息提交模块(Commiter),为分区提交模块,用于生成分区感应消息,并将分区感应消息下发到数据存储层5。
水印(watermark),是Apache Flink为处理EventTime窗口计算提出的一种机制,本质上是一种时间戳。
流标识(LogId),可以通过三段式语义(如,部门+项目+业务)进行定义,以便可以快速锁定数据所属的范畴,同时,所述流标识还可以定义有其他附属信息,如,创建者信息等。数据流可以定义有schema(数据库的组织与结构),如字段、类型、必填与否等信息。schema可以用于所述数据流的分析和评估操作。根据定义的schema,所述数据流的元数据信息中可以被写入相应的字段值,如业务场景等,不同业务场景可以配置不同的SLA(Service-Level Agreement,服务等级协议)质量保障。需要说明的是,这些字段值可以被用户或管理写入和修改的。
图1示意性示出了根据本申请实施例的流式数据传输链路,所述的流式数据传输链路在于提供流式的数据传输服务,如用于实时流和离线流两大场景的数据收集和分发。实时流场景,对应于秒级别的数据时效性,主要用于将数据写入到kafka、hbase等数据库中。离线流场景,对应于小时级别或天级别的数据时效性,主要用于将数据写入到HDFS、hive等数据库中。所述流式数据传输系统可以由下几部分组成:BFE层1、网络路由层2、数据缓冲层3、数据分发层4、数据存储层5等。
所述BFE层1,可以通过一个或多个边缘节点实现,用于接收、处理、输出上报数据。所述上报数据可以是来自不同数据源的数据,例如,APP和Web的上报数据。
所述网络路由层2,可以通过一个或多个网关节点实现,用于将BFE层1提供的数据转发到数据缓冲层3。具体的,所述网络路由层2被配置连接于BFE层1,并可以适应各种不同的业务场景和数据协议,例如,被配置用于兼容解析HTTP(HyperText Transfer Protocol,超文本传输协议)协议的APP和Web数据,和GRPC协议的内部通信数据。
所述数据缓冲层3,可以通过消息分发订阅系统或上述系统集群实现。在一些实施例中,数据缓冲层3可以由多套kafka cluster(kafka集群)组成,起到数据削峰填谷的作用。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的kafka cluster中,以保障不同类型数据的价值,避免系统故障影响整体数据。
所述数据分发层4,可以由流式数据分发系统(由多个流量分发节点Collector构成)实现,用于内容转换和分发存储,即保障数据从数据缓冲层3获取并写入到数据存储层5中对应的存储终端。具体的,所述数据分发层4用于数据的分发落地,支持的分发场景包括HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、Kafka、Hbase、ES(Elasticsearch)等,而在分发的过程中,由于不同存储终端的数据落地时效性要求可能不同,例如,HDFS的数据写入是按天进行任务的计算和应用,Kafka的数据写入一般是按秒进行任务的计算和应用,通常用于诸如实时推荐、实时计算等场景中。针对数据不同场景的分发要求,数据分发层4可以根据存储终端进行服务分组管理。例如,线上会划分为KafkaCollector组、HDFS Collector组等。不同Collector组会从数据缓冲层3获取相应主题(topic)的数据并分发至下游。
所述数据存储层5,用于存储数据,可以由不同形式的数据库构成,所述数据库可以是HDFS、ES、Hive、Kafka和Hbase等。
即,所述流式数据传输链路的数据流向如下:BFE层1→网络路由层2→数据缓冲层3→数据分发层4→数据存储层5。通过所述流式数据传输链路,数据源中的数据可以被传输到目标终端。具体如下:数据源可以输出以LogId为流标识的数据流,通过HTTP、RPC等协议将这些数据上报给边缘节点,并依次经过网关路由层2、数据缓冲层3、数据分发层4,并最终进入到数据存储层5中的存储终端中。
实施例一
本实施例在于示例性地描述数据分发层4中的流式数据分发系统。
所述流式数据分发系统包括一个或多个Flink集群,每个Flink集群用于:
消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;
监测所述数据流关联的分区感应消息;及
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
所述分区感应信息中携带有分区信息,如时间分区信息等。
如图2所示,所述流式数据分发系统可以示例性地包括基于Yarn(Yet AnotherResource Negotiator,另一种资源协调者)的三个Flink集群。这三个Flink集群可以分别负责数据缓存层3中的一个Topic下的一个或多个数据流,如分别负责Kafka Topic下的数据流、HDFS Topic下的数据流,或Hbase Topic下的数据流。
继续参阅图2,Flink集群的拉起过程如下:
(1)当用户需要配置一条数据流A1时,MYSQL数据库可以接收到来自用户提供的以下信息:系统配置信息(System config)、管道配置信息(Pipeline config),以及这条数据流A1的元数据信息(Metadata)。(2)Lancer-control(控制平台,可以根据数据流的配置信息进行Flink集群的控制操作,如Flink集群的调度控制)会调用Lancer-service(服务平台,可以写入和读取数据库中的数据流配置信息)的API(Application ProgrammingInterface,应用程序接口),通过Lance-service获取配置信息(如System config),并将所述配置信息提供给Saber(实时计算平台,可以生成和提交调度指令)。(3)Saber根据配置信息将调度作业提交到Yarn上。(4)Yarn接收到所述调度作业之后,会根据所述调度作业拉起一个Flink集群,其中,这个Flink集群可以从所述数据缓存层3中拿这个数据流A1,并对这个数据流A1进行分发。
继续参阅图2,每个Flink集群均设置有分区感应机制,主动地通过消息服务下发分区感应消息。
本实施例具有以下优势:(1)相对于传统的Flume架构,本实施例将Flink架构引入到流式数据分发系统中,可以避免不同数据流之间的相互影响;(2)设置有分区感应机制,以及时主动提供数据流的分区感应消息。相对于传统技术中的通过定时脚本检测分区信息,分区感应机制可以节省计算性能。对下游节点而言,其在接收到该分区感应消息之后,可以基于该分区感应消息确定任务的执行。以按小时执行的任务为例:如果所述分区感应消息的内容包括2020年8月7日17:50,则说明2020年8月7日17:00之前的数据已经全部完成写入到该下游节点中,因此,该下游节点可以根据2020年8月7日16:00至2020年8月7日17:00这一分区的数据执行相应的任务,如计算2020年8月7日16:00至2020年8月7日17:00这一时间段的DAU(Daily Active User,日活跃用户数量),或根据2020年8月7日16:00至2020年8月7日17:00这一分区的数据进行小时级的模型增量训练。
如图3所示,每个Flink集群均包括JobManager和TaskManager这两个模块。所述TaskManager包括多个Source、多个Tranform、多个Sink,以及Commiter。
以下对Commiter、Source、Tranform、Sink分别进行介绍。
(1)所述Commiter,其可以提供分区感应特性。
所述Commiter用于:获取各个Sink中的数据的watermark,并找到最小watermark;根据所述最小watermark生成所述分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。在本实施例中,由各个Source生成watermark,所生产的watermark均流向至Commiter中。需要说明的是,最小watermark是指在所有watermark中时间靠最前的watermark。举例而言,当接收到三个watermark且这个三个watermark的时间信息分别为2020年8月7日18:36、2020年8月7日18:01、2020年8月7日18:45),Commiter则会将“2020年8月7日18:01”对应的watermark写入到分区感应消息中。在本实施例中,通过Commiter机制和watermark可以得到有效的分区感应消息。
继续参阅图3,所述Commiter还用于:向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。僵尸文件一般为设备启动等时刻产生的特定格式文件,该格式文件属于无效文件。如图3中的HDFS集群,当Commiter监测到该HDFS集群的某个目录下有僵尸文件,则下发清理指令。本实施例可以及时的清理下游节点的无效文件,提升可用存储空间。
所述Commiter还用于:追加分区感应消息到元数据信息存储节点(如,HIVEMetaStore)中。
(2)所述Source,其可以提供分区分片有序特性。
为了使得所述下游节点的任务从小时级别升级到分钟级别,例如,所述下游节点可以2020年8月7日19:28可以根据2020年8月7日19:21至2020年8月7日19:25这一分区数据执行相应的任务,这就对写入到所述下游节点的数据同步性提出了极高的要求,即在2020年8月7日19:28之前,要完成写入2020年8月7日19:21至2020年8月7日19:25对应的所有数据。在本实施例中,通过控制各个Source的数据消费(流入)速度,来解决上述问题。如,每个Source用于:消费相应的数据流;将所述相应的数据流的watermark上报到所述JobManager中,以便所述JobManager生成速度控制指令;接收所述速度控制指令;及根据所述速度控制指令,控制对所述相应的数据流的消费速度,以和其他Source中的其他数据流的消费速度保持一致,以便所述下游节点每次获取一个时间窗口内的所有数据。如图4所示,数据缓存层3中的某个Topic下具有三个分区(Partition)。通常来说,一个Partition对应Flink集群中的一个Source。有的Source消费速度快,例如已经消费到了2020年8月7日19:46;有的Source消费速度慢,例如已经消费到了2020年8月7日17:46。这将导致有一个问题,写入到所述下游节点的数据时间相差很大,无法实时地执行分钟级别的任务。在本实施例中,通过各个Source上报的watermark,JobManager可以知道各个Source的消费进度,从而向各个Source分别下发相应的速度控制指令。在接收到相应的速度控制指令之后,各个Source会限制从相应的Partition中的数据消费速度,从而保证:各个Partition中的数据流以大致相同的速度通过Flink集群流入到下游节点(如HDSF集群)中。如图4所示,对应于T1分区的数据P1_T1、P2_T1、P3_T1、P4_T1、P5_T1、P6_T1等在大致相同的时间存储到HDFS集群中。由于这个时间片段T1的所有分区数据都几乎同时存储到HDFS集群中,因此可以针对这个时间片段T1的所有分区数据执行相应的数据处理任务,执行分钟级的任务。
(3)所述Tranform,其可以提供数据处理和适配。
如图5所示,每个Tranform包括解析模块(Parser)、ETL模块(ETL)和适配模块(Exporter)。所述解析模块,用于对相应的数据流进行解析操作,以得到解析后的数据。所述ETL模块,用于根据所述相应的数据流的流标识,对所述解析后的数据进行相应的ETL(Extract-Transform-Load,数据抽取、转换和加载)处理,以得到ETL处理后的数据。所述适配模块,用于将所述ETL处理后的数据进行数据格式转换,以得到格式转换后的数据流。需要说明的是,各个模块可以是可自定义/可插拔模块。本实施例包括以下几个技术优势:(1)通过所述解析模块可以对相应的数据流进行解压、反序列化等。(2)通过所述ETL模块可以对不同的数据流进行不同的数据清洗操作。示例性的,用户可以自定义所述相应的数据流的数据清洗规则,并通过Lance-Service经由广播模块(ConfigBroadcast)将包括数据清洗规则的Metadata发送到ETL模块中,从而所述ETL模块可以对所述相应的数据流执行相应的ETL操作。(3)所述适配模块可以对写入到不同下游节点的数据,进行相应的格式转换和类别转换。如图6所示,如果下游节点为HDFS集群,则所述适配模块则需要将数据转为Parquet格式;如果下游节点为Kafaka集群,则所述适配模块则需要将数据转为Protubuf(GoogleProtocol Buffer,由google公司用于数据交换的序列结构化数据格式)格式;如果下游节点为ES集群,则所述适配模块则需要将数据转为Json(JavaScript Object Notation,JS对象简谱)格式;如果下游节点为Hbase集群,则所述适配模块则需要将数据转为KeyValue(以键值存储数据)格式。需要说明的是,上述示例并不用于限制本申请保护范围。
(4)所述Sink,可以提供动态分区(Bucket)机制。
所述Sink用于:根据事件时间(EventTime)和多个数据流的元数据信息(Metadata),动态分配多个分区,以将相应的数据写入到所述下游节点中相应的目录下。如图7所示,本实施例可以通过分区分配组件(BucketAssigner)对所述Sink接收到的多个LogId的数据,则会进行相应LogId的数据下发到下游节点的相应的目录下。
实施例二
图8示意性示出了根据本申请实施例二的流式数据分发方法的流程图。下面以数据分发层的计算机设备为执行主体进行示例性描述。该计算机设备可以服务器或服务器集群。
如图8所示,该流式数据分发方法可以包括步骤S800~步骤S804,其中:
步骤S800,消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点。
步骤S802,监测所述数据流关联的分区感应消息。
步骤S804,将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
如图9所示,该流式数据分发方法还可以包括步骤S900~步骤S906,其中:步骤S900,生成所述数据流的watermark;步骤S902,将所述watermark上报至任务部署者,以便所述任务部署者根据所述watermark生成速度控制指令;步骤S904,接收所述速度控制指令;步骤S906,根据所述速度控制指令,控制所述数据流的消费速度。
如图10所示,该流式数据分发方法还可以包括步骤S1000~步骤S1004,其中:步骤S1000,对所述数据流进行解析操作,以得到解析后的数据;步骤S1002,根据所述数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;步骤S1004,将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
所述计算机设备为Flink集群或位于Flink集群中。
如图11所示,步骤S804可以包括步骤S1100~步骤S1104,其中:步骤S1100,获取所述Flink集群中与所述数据流关联的所有watermark,并找到最小watermark;步骤S1102,根据所述最小watermark生成所述分区感应消息;步骤S1104,将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
如图12所示,该流式数据分发方法还可以包括步骤S1200,所述步骤S1200为:向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
如图13所示,该流式数据分发方法还可以包括步骤S1300,所述步骤S1300为:根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
实施例三
图14示出了根据本申请实施例三的流式数据分发装置的框图,该流式数据分发装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。如图14所示,所述流式数据分发装置1400可以包括以下组成部分:
消费模块1410,消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点。
监测模块1420,监测所述数据流关联的分区感应消息。
下发模块1430,将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,所述流式数据分发装置1400还包括控制模块,用于:生成所述数据流的水印;将所述水印上报至任务部署者,以便所述任务部署者根据所述水印生成速度控制指令;接收所述速度控制指令;及根据所述速度控制指令,控制所述数据流的消费速度。
可选的,所述流式数据分发装置1400还把数据处理模块。所述数据处理模块用于:对所述数据流进行解析操作,以得到解析后的数据;根据所述数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
可选的,所述流式数据分发装置1400为或位于Flink集群中;所述下发模块,还用于:获取所述Flink集群中与所述数据流关联的所有水印,并找到最小水印;根据所述最小水印生成所述分区感应消息;及将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
可选的,所述下发模块还用于:向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
可选的,所述流式数据分发装置1400还把动态分配模块。所述动态分配模块用于:根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
实施例四
图15示意性示出了根据本申请实施例四的适于实现流式数据分发方法的计算机设备的硬件架构示意图。本实施例中,计算机设备。并且,所述计算机设备15其是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是工作站、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图15所示,计算机设备15至少包括但不限于:可通过系统总线相互通信链接存储器1510、处理器1520、网络接口1530。其中:
存储器1510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1510可以是计算机设备15的内部存储模块,例如该计算机设备15的硬盘或内存。在另一些实施例中,存储器1510也可以是计算机设备15的外部存储设备,例如该计算机设备15上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器1510还可以既包括计算机设备15的内部存储模块也包括其外部存储设备。本实施例中,存储器1510通常用于存储安装于计算机设备15的操作系统和各类应用软件,例如流式数据分发方法的程序代码等。此外,存储器1510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1520通常用于控制计算机设备15的总体操作,例如执行与计算机设备15进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1520用于运行存储器1510中存储的程序代码或者处理数据。
网络接口1530可包括无线网络接口或有线网络接口,该网络接口1530通常用于在计算机设备15与其他计算机设备之间建立通信连接。例如,网络接口1530用于通过网络将计算机设备15与外部终端相连,在计算机设备15与外部终端之间的建立数据传输通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图15仅示出了具有部件1510-1530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器1510中的流式数据分发方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1520)所执行,以完成本申请。
实施例五
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的流式数据分发方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的流式数据分发方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (15)
1.一种流式数据分发系统,其特征在于,包括一个或多个Flink集群,每个Flink集群用于:
消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;
监测所述数据流关联的分区感应消息;及
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
2.根据权利要求1所述的流式数据传输系统,其特征在于,每个Flink集群包括任务执行者和任务部署者;
所述任务执行者包括多个数据输入模块、多个数据处理模块、多个数据输出模块,以及分区消息提交模块;
其中,所述分区消息提交模块用于:
获取各个数据输出模块中的数据的水印,并找到最小水印;
根据所述最小水印生成所述分区感应消息;及
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
3.根据权利要求2所述的流式数据传输系统,其特征在于,所述分区消息提交模块还用于:
向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
4.根据权利要求2所述的流式数据传输系统,其特征在于,每个数据输入模块用于:
消费相应的数据流;
将所述相应的数据流的水印上报到所述任务部署者中,以便所述任务部署者生成速度控制指令;
接收所述速度控制指令;及
根据所述速度控制指令,控制对所述相应的数据流的消费速度,以和其他数据输入模块中的其他数据流的消费速度保持一致,以便所述下游节点每次获取一个时间窗口内的所有数据。
5.根据权利要求2所述的流式数据传输系统,其特征在于,每个数据处理模块包括解析模块、ETL模块和适配模块,其中:
所述解析模块,用于对相应的数据流进行解析操作,以得到解析后的数据;
所述ETL模块,用于根据所述相应的数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;
所述适配模块,用于将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
6.根据权利要求2所述的流式数据传输系统,其特征在于,每个数据输出模块用于:
根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
7.一种流式数据分发方法,其特征在于,用于数据分发层的计算机设备中,所述方法包括:
消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;
监测所述数据流关联的分区感应消息;及
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
8.根据权利要求7所述的流式数据分发方法,其特征在于,还包括:
生成所述数据流的水印;
将所述水印上报至任务部署者,以便所述任务部署者根据所述水印生成速度控制指令;
接收所述速度控制指令;及
根据所述速度控制指令,控制所述数据流的消费速度。
9.根据权利要求7所述的流式数据分发方法,其特征在于,还包括:
对所述数据流进行解析操作,以得到解析后的数据;
根据所述数据流的流标识,对所述解析后的数据进行相应的ETL处理,以得到ETL处理后的数据;
将所述ETL处理后的数据进行格式转换和/或类型转换,以得到转换后的数据。
10.根据权利要求7所述的流式数据分发方法,其特征在于,所述计算机设备为或位于Flink集群中;
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务,还包括:
获取所述Flink集群中与所述数据流关联的所有水印,并找到最小水印;
根据所述最小水印生成所述分区感应消息;及
将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
11.根据权利要求7所述的流式数据分发方法,其特征在于,还包括:
向所述下游节点下发清理指令,以通知所述下游节点清理僵尸文件。
12.根据权利要求7所述的流式数据分发方法,其特征在于,还包括:
根据事件时间、所述数据流的元数据信息以及其他数据流的元数据信息,动态地分配以得到多个分区,以将相应的数据写入到所述下游节点中相应的目录下。
13.一种流式数据分发装置,其特征在于,所述装置包括:
消费模块,用于消费上游的消息订阅系统中的数据流,并将所述数据流中的数据分发到相应的下游节点;
监测模块,用于监测所述数据流关联的分区感应消息;及
下发模块,用于将所述分区感应消息下发给所述下游节点,以便所述下游节点执行相应的数据处理任务。
14.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求7至12任一项所述边缘数据传输方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现权利要求7至12任一项所述边缘数据传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010813141.0A CN111966943A (zh) | 2020-08-13 | 2020-08-13 | 流式数据分发方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010813141.0A CN111966943A (zh) | 2020-08-13 | 2020-08-13 | 流式数据分发方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111966943A true CN111966943A (zh) | 2020-11-20 |
Family
ID=73365865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010813141.0A Pending CN111966943A (zh) | 2020-08-13 | 2020-08-13 | 流式数据分发方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966943A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112507029A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据处理系统及数据实时处理方法 |
CN112637288A (zh) * | 2020-12-11 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 流式数据分发方法和系统 |
CN113254445A (zh) * | 2021-05-26 | 2021-08-13 | 平安普惠企业管理有限公司 | 实时数据存储方法、装置、计算机设备及存储介质 |
CN113778856A (zh) * | 2021-07-27 | 2021-12-10 | 浙江大学 | 基于流媒体语义服务器的app检测方法和系统 |
CN114385139A (zh) * | 2021-12-29 | 2022-04-22 | 武汉达梦数据库股份有限公司 | 一种flink框架运行ETL流程的消息序列化以及比较方法与装置 |
CN112506960B (zh) * | 2020-12-17 | 2024-03-19 | 青岛以萨数据技术有限公司 | 基于ArangoDB引擎的多模型数据存储方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170201556A1 (en) * | 2016-01-12 | 2017-07-13 | International Business Machines Corporation | Scalable event stream data processing using a messaging system |
US20170242887A1 (en) * | 2016-02-24 | 2017-08-24 | Salesforce.Com, Inc. | Efficient access scheduling for super scaled stream processing systems |
WO2018103315A1 (zh) * | 2016-12-09 | 2018-06-14 | 上海壹账通金融科技有限公司 | 监控数据的处理方法、装置、服务器及存储设备 |
CN109739659A (zh) * | 2018-12-13 | 2019-05-10 | 上海恺英网络科技有限公司 | 一种分布式消息队列的消息消费的方法和系统 |
CN109800231A (zh) * | 2019-01-17 | 2019-05-24 | 浙江大学 | 一种基于Flink的实时轨迹co-movement运动模式检测方法 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
CN111142942A (zh) * | 2019-12-26 | 2020-05-12 | 远景智能国际私人投资有限公司 | 窗口数据的处理方法、装置、服务器及存储介质 |
CN111338814A (zh) * | 2020-02-13 | 2020-06-26 | 北京奇艺世纪科技有限公司 | 消息处理方法和装置、存储介质和电子装置 |
-
2020
- 2020-08-13 CN CN202010813141.0A patent/CN111966943A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170201556A1 (en) * | 2016-01-12 | 2017-07-13 | International Business Machines Corporation | Scalable event stream data processing using a messaging system |
US20170242887A1 (en) * | 2016-02-24 | 2017-08-24 | Salesforce.Com, Inc. | Efficient access scheduling for super scaled stream processing systems |
WO2018103315A1 (zh) * | 2016-12-09 | 2018-06-14 | 上海壹账通金融科技有限公司 | 监控数据的处理方法、装置、服务器及存储设备 |
CN109739659A (zh) * | 2018-12-13 | 2019-05-10 | 上海恺英网络科技有限公司 | 一种分布式消息队列的消息消费的方法和系统 |
CN109800231A (zh) * | 2019-01-17 | 2019-05-24 | 浙江大学 | 一种基于Flink的实时轨迹co-movement运动模式检测方法 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
CN111142942A (zh) * | 2019-12-26 | 2020-05-12 | 远景智能国际私人投资有限公司 | 窗口数据的处理方法、装置、服务器及存储介质 |
CN111338814A (zh) * | 2020-02-13 | 2020-06-26 | 北京奇艺世纪科技有限公司 | 消息处理方法和装置、存储介质和电子装置 |
Non-Patent Citations (2)
Title |
---|
LITTLEMAGIC: "再谈Flink事件时间、水印和迟到数据处理", HTTPS://WWW.JIANSHU.COM/P/C612E95A5028, pages 1 - 7 * |
陈付梅;韩德志;毕坤;戴永涛;: "大数据环境下的分布式数据流处理关键技术探析", 计算机应用, no. 03, pages 14 - 21 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637288A (zh) * | 2020-12-11 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 流式数据分发方法和系统 |
CN112506960B (zh) * | 2020-12-17 | 2024-03-19 | 青岛以萨数据技术有限公司 | 基于ArangoDB引擎的多模型数据存储方法及系统 |
CN112507029A (zh) * | 2020-12-18 | 2021-03-16 | 上海哔哩哔哩科技有限公司 | 数据处理系统及数据实时处理方法 |
CN113254445A (zh) * | 2021-05-26 | 2021-08-13 | 平安普惠企业管理有限公司 | 实时数据存储方法、装置、计算机设备及存储介质 |
CN113254445B (zh) * | 2021-05-26 | 2024-01-05 | 禾量科技(上海)有限公司 | 实时数据存储方法、装置、计算机设备及存储介质 |
CN113778856A (zh) * | 2021-07-27 | 2021-12-10 | 浙江大学 | 基于流媒体语义服务器的app检测方法和系统 |
CN113778856B (zh) * | 2021-07-27 | 2023-12-08 | 浙江大学 | 基于流媒体语义服务器的app检测方法和系统 |
CN114385139A (zh) * | 2021-12-29 | 2022-04-22 | 武汉达梦数据库股份有限公司 | 一种flink框架运行ETL流程的消息序列化以及比较方法与装置 |
CN114385139B (zh) * | 2021-12-29 | 2022-12-16 | 武汉达梦数据库股份有限公司 | 一种flink框架运行ETL流程的消息序列化以及比较方法与装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111966943A (zh) | 流式数据分发方法和系统 | |
US11755452B2 (en) | Log data collection method based on log data generated by container in application container environment, log data collection device, storage medium, and log data collection system | |
US20230004434A1 (en) | Automated reconfiguration of real time data stream processing | |
US10560544B2 (en) | Data caching in a collaborative file sharing system | |
US7979245B1 (en) | Model-based systems and methods for monitoring computing resource performance | |
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
KR102634058B1 (ko) | 입력 및 출력 스키마 매핑 | |
CN112507029B (zh) | 数据处理系统及数据实时处理方法 | |
CN112612768B (zh) | 模型训练方法和装置 | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
CN111970195B (zh) | 数据传输方法和流式数据传输系统 | |
CN112559475B (zh) | 数据实时捕获和传输方法及系统 | |
CN111966289A (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN110769018A (zh) | 一种消息推送方法及装置 | |
CN110532322A (zh) | 运维交互方法、系统、计算机可读存储介质及设备 | |
CN112019605A (zh) | 数据流的数据分发方法和系统 | |
CN114265680A (zh) | 一种海量数据处理方法、装置、电子设备及存储介质 | |
CN110019158A (zh) | 一种监控数据质量的方法和装置 | |
CN109586970B (zh) | 资源分配方法、装置及系统 | |
CN114401239A (zh) | 元数据传输方法、装置、计算机设备和存储介质 | |
US10922145B2 (en) | Scheduling software jobs having dependencies | |
CN115712524A (zh) | 数据恢复方法及装置 | |
CN112637288A (zh) | 流式数据分发方法和系统 | |
CN113612832A (zh) | 流式数据分发方法与系统 | |
CN113568966A (zh) | 用于ods层和dw层之间的数据处理方法与系统 |
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 |