数据流计算模型及其在大数据处理中的应用

本文深入探讨了数据流计算模型在大数据处理中的应用,区分了计算机体系结构中的数据流模型和大数据处理中的数据流计算模型。通过对数据流图、数据流编程模型、时间语义、水位线、触发器和修正策略的详细分析,揭示了批处理引擎(如Spark)和流计算引擎(如Flink)在实现上的异同。重点讨论了两种引擎在处理无界数据时的挑战及解决方案,强调了流计算引擎在处理实时性和延迟性上的优势。
摘要由CSDN通过智能技术生成

点击上方蓝字关注我们

数据流计算模型及其在大数据处理中的应用

毕倪飞, 丁光耀, 陈启航, 徐辰, 周傲英

华东师范大学数据科学与工程学院,上海 200062

论文引用格式:

毕倪飞, 丁光耀, 陈启航, 徐辰, 周傲英.数据流计算模型及其在大数据处理中的应用. 大数据[J], 2020, 6(3):73-86

BI N F, DING G Y, CHEN Q H, XU C, ZHOU A Y.Dataflow model and its applications in big data processing. Big Data Research[J], 2020, 6(3): 73-86

1 引言

计算机体系结构的计算模型可以分为控制流和数据流两大类。控制流计算机也被称为冯·诺伊曼型计算机,它是主流计算机一直采用的体系结构。控制流计算模型按指令的顺序来驱动操作,数据是否参加运算取决于当时所执行的指令是否需要。数据流计算模型采用数据驱动方式,只有当一条或一组指令所需的操作数全部准备好时,才能激发相应指令的执行,执行结果又流向等待这一数据的下一条或一组指令,以驱动该条或该组指令的执行。大数据处理中也存在数据流计算模型的概念,但是大数据处理中的数据流计算模型用于完成复杂的数据处理工作,与计算机体系结构中的数据流计算模型位于不同层面,并非同一个概念。此外,Murray和McSherry等人提出增量数据流计算模型,主要用于解决迭代算法中增量计算的问题,TensorFlow的数据流模型主要用于抽象描述机器学习算法中的状态和计算,Bonna和Loubach等人提出的场景感知数据流模型主要对动态应用程序进行建模和仿真,而本文大数据处理中的数据流计算模型用于低时延、正确地处理大规模、无界、乱序的数据,因此这些数据流计算模型与本文大数据处理中的数据流计算模型不是同一个概念。

现有的大数据处理系统按照执行引擎可以分为两大类。一类是基于批处理引擎的大数据处理系统,如MapReduce 、Spar k、Spark Streaming、Structured Streami ng和Dr yad等;另一类是基于流计算引擎的大数据处理系统,如S torm、Mill wheel、Samza和Flink等。在执行引擎层面 ,大数据处理中的数据流计算模型体现为数据流图。大数据处理系统通常使用数据流图来直观地表达复杂的数据处理逻辑,用户编写的数据处理流程在系统中先被转换为逻辑数据流图,该图是由一组顶点和边构成的有向无环图,该有向无环图在被交给底层执行引擎之前,根据特定的并发度又被进一步转换为物理数据流图。在统一编程层面,大数据处理中的数据流计算模型体现为 数据流编程模型。数据流编程模型将批处理和流计算引擎的编程方式进行抽象统一,引入了事件时间、窗口和水位线等重要概念,旨在满足数据消费者对窗口、时间语义以及处理时延等的需求。

本文结合Spark批处理引擎和Flink流计算引擎等多个执行引擎,对比分析了数据流图和数据流编程模型在两者中的具体实现。

2 数据流图

本节首先介绍大数据处理中的逻辑数据流图,其次介绍物理数据流图,最后结合Spark批处理引擎和Flink流计算引擎分析物理数据流图在两者中的具体体现。

2.1 逻辑数据流图

大数据处理系统通常使用逻辑数据流图来抽象描述整个数据处理的逻辑流程,逻辑数据流图是一个由一组顶点和边构成的有向无环图。有向无环图中的每个顶点代表了整个数据处理流程中一个特定的数据处理步骤,封装了用户定义的数据转换操作,如选择、过滤、聚合、连接等,对接收到的输入数据执行转换操作后产生输出数据。顶点和顶点之间通过有向边连接,每条有向边代表了数据的流动和数据的依赖。与有向边起点相连的顶点表示数据的生产者,与有向边终点相连的顶点表示数据的消费者,数据由生产者流向消费者,消费者对数据的处理依赖于生产者的处理结果。如图1所示,该逻辑数据流图由5个表示计算逻辑的顶点和4条表示数据流动和数据依赖的有向边组成,表达了数据从读取顶点被读取后,依次流经映射、按键值分组和过滤3个顶点,并在这3个顶点中进行转换处理,最终通过保存顶点将处理结果存储下来的整个数据处理流程。

2.2 物理数据流图

大数据处理系统通常采用并行化的策略进行数据处理,将数据按照特定的分区策略进行分区,并为每个数据处理顶点设定并行度,让不同的数据分区流入各自相应的数据处理顶点实例,以达到并行处理的目的。但是逻辑数据流图中的顶点和边仅仅是对处理过程的逻辑抽象,即每个顶点是一个逻辑的处理步骤,不包含系统实际处理数据时并行化的概念,每条边也只描述了逻辑顶点之间的数据流动。因此,逻辑数据流图不能被直接应用到底层执行引擎,而需要先在逻辑数据流图中引入并行度,将其转换为物理数据流图后才能交给底层执行引擎。图2展示了图1中描述的逻辑数据流图根据特定的并行度转换后得到的物理数据流图,该物理数据流图中读取和映射2个数据处理顶点的并行度为3,按键值分组、过滤和保存3个数据处理顶点的并行度为2。由于批处理引擎和流计算引擎2种执行引擎的数据交换机制不同,物理数据流图在这2种执行引擎中的具体体现也有所不同。

图1   逻辑数据流图

图2   物理数据流图

2.2.1 批处理引擎中的物理数据流图

在批处理引擎中,一个物理数据流图通常被划分为多个阶段,阶段之间根据依赖关系按序执行,一个阶段只有等其依赖的所有阶段都执行结束后才能开始执行。每个阶段由与分区数相同个数的任务组成,一个任务负责一个分区,各个任务之间相互独立执行,不会发生数据交换。当某个任务中的一条数据被处理完成后,并不会立刻通过网络将其传输到下一个阶段的任务中,而是先将其放在缓存中,当缓存达到一定的阈值时,再将缓存中的数据溢写到本地磁盘上。只有当一个阶段中所有的任务都完成数据处理,并将处理结果写入磁盘后,才开始将这个阶段处理后的中间结果通过网络传输到下一个阶段进行后续处理。

例如,在基于批处理引擎的Spark系统中,将每个逻辑数据流图根据给定的并行度转换为物理数据流图后,系统会根据数据交换将该物理数据流图划分为多个阶段按序执行。如图3所示,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值