Skip to Content
使用 Apache Flink 进行流处理
book

使用 Apache Flink 进行流处理

by Fabian Hueske, Vasiliki Kalavri
May 2025
Intermediate to advanced
310 pages
4h 4m
Chinese
O'Reilly Media, Inc.
Content preview from 使用 Apache Flink 进行流处理

第 2 章 流处理基础 流处理基础

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

到目前为止,您 已经看到了流处理如何解决传统批处理的一些局限性,以及如何实现新的应用和架构。您还了解了开源流处理领域的一些演变,以及 Flink 流应用程序的样子。在本章中,您将正式进入流处理领域。

本章旨在介绍流处理的基本概念及其框架要求。我们希望,读完本章后,你能对现代流处理系统的功能进行评估。

数据流编程入门

在 我们深入探讨流处理的基本原理之前,让我们先了解一下数据流编程的背景以及我们将在本书中使用的术语。

数据流图表

顾名思义,数据流程序描述了数据如何在操作之间流动。数据流程序通常表示为有向图,其中节点称为 运算符,表示计算,边表示 数据依赖关系。操作符是数据流应用程序的基本功能单元。它们从输入端消耗数据,对数据进行计算,并将数据输出到输出端,以便进一步处理。没有输入端口的操作符称为 数据源,没有输出端口的操作符称为 数据汇。数据流图必须至少有一个数据源和一个数据汇。图 2-1显示了一个数据流程序,该程序从输入的推文流中提取并统计标签。

A logical dataflow graph
图 2-1. 连续计数标签的逻辑数据流图(节点表示操作符,边表示数据依赖关系)

图 2-1中的数据流图之所以称为逻辑图,是因为它们传达了计算逻辑的高层视图。为了执行数据流程序,需要将逻辑图转换为物理数据流图,详细说明程序的执行方式。例如,如果我们使用的是分布式处理引擎,每个操作员可能有多个并行任务,运行在不同的物理机器上。图 2-2显示了图 2-1 逻辑图的物理数据流图。在逻辑数据流图中,节点代表操作符,而在物理数据流中,节点是任务。提取标签 "和 "计数 "操作符有两个并行的操作符任务,每个任务对输入数据的一个子集进行计算。

A physical dataflow graph
图 2-2. 计算标签的物理数据流计划(节点代表任务)

数据并行和任务并行

可以通过不同方式利用数据流图中的并行性。首先,可以对输入数据进行分区,让相同操作的任务在数据子集上并行执行。这种并行方式称为数据并行。数据并行非常有用,因为它可以处理大量数据,并将计算负荷分散到多个计算节点上。其次,可以让不同操作员的任务并行执行相同或不同数据的计算。这种并行方式称为任务并行。利用任务并行,可以更好地利用集群的计算资源。

数据交换策略

数据交换策略 定义了如何将数据项分配给物理数据流图中的任务。数据交换策略可以由执行引擎根据操作符的语义自动选择,也可以由数据流程序员明确施加。下面,我们简要回顾一些常见的数据交换策略,如图 2-3 所示。

  • 转发策略将数据从任务发送到接收任务。如果两个任务位于同一台物理机上(任务调度程序通常会确保这一点),这种交换策略就能避免网络通信。

  • 广播策略将每个数据项发送给操作员的所有并行任务。由于这种策略会复制数据并涉及网络通信,因此成本相当高。

  • 基于关键字的策略通过关键字属性对数据进行分区,并保证具有相同关键字的数据项将由相同的任务处理。在图 2-2 中,"提取标签 "操作符的输出是按键(标签)划分的,这样计数操作符任务就能正确计算每个标签的出现次数。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows®, i5/OS™, and z/OS®, Second Edition

DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows®, i5/OS™, and z/OS®, Second Edition

Zamil Janmohamed, Clara Liu, Drew Bradstock, Raul Chong, Michael Gao, Fraser McArthur, Paul Yip
Berkeley DB

Berkeley DB

Sleepycat™ Software, Inc.

Publisher Resources

ISBN: 9798341657175