什么是 Amazon Managed Service for Apache Flink? - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink(Amazon MSF)之前称为 Amazon Kinesis Data Analytics for Apache Flink。

什么是 Amazon Managed Service for Apache Flink?

借助 Amazon Managed Service for Apache Flink,您可以使用 Java、Scala、Python 或 SQL 来处理和分析流数据。该服务使您能够针对流源和静态源编写和运行代码,以执行时间序列分析,馈送实时控制面板和指标。

可以使用基于 Apache Flink 的开源库,在 Managed Service for Apache Flink 中通过您选择的语言构建应用程序。Apache Flink 是处理数据流的常用框架和引擎。

Managed Service for Apache Flink为您的 Apache Flink 应用程序提供底层基础设施。它实施一些核心功能,例如,预置计算资源、可用区失效转移恢复能力、并行计算、自动扩展和应用程序备份(实施为检查点和快照)。您可以使用高级 Flink 编程功能(如运算符、函数、源和接收器),使用方法与您自行托管 Flink 基础设施时一样。

使用 Amazon Managed Service for Apache Flink 运行 Flink 作业时有两种选择。借助 Managed Service for Apache Flink,您可以使您选择的 IDE 和 Apache Flink Datastream 或 Table API,以 Java、Scala 或 Python(以及嵌入式 SQL)构建 Flink 应用程序。借助 Managed Service for Apache Flink Studio,您可以实时交互式地查询数据流,并使用标准 SQL、Python 和 Scala 轻松构建和运行流处理应用程序。

您可以选择最适合自身使用案例的方法。如果您不确定,本节将提供高级指导来帮助您。

Decision tree for selecting Flink application, Deployed Studio application, or Studio Notebook based on use case and programming experience.

在决定是使用 Amazon Managed Service for Apache Flink 还是 Amazon Managed Service for Apache Flink Studio 之前,您应该考虑自己的使用案例。

如果您计划运作长时间运行的应用程序,该应用程序将承担流式传输 ETL 或持续应用程序等工作负载,则应考虑使用 Managed Service for Apache Flink。这是因为您可以直接在自己选择的 IDE 中使用 Flink API 创建 Flink 应用程序。使用 IDE 在本地进行开发还可以确保您可以利用软件开发生命周期(SDLC)的通用流程和工具,例如 Git 中的代码版本控制、CI/CD 自动化或单元测试。

如果您对临时数据探索感兴趣,想要交互式地查询流数据,或者创建私有的实时控制面板,Managed Service for Apache Flink Studio 只需单击几下即可帮助您实现这些目标。熟悉 SQL 的用户可以考虑直接从 Studio 部署长时间运行的应用程序。

注意

您可以将 Studio 笔记本升级为长期运行的应用程序。但是,如果您想与 SDLC 工具(例如 Git 上的代码版本控制和 CI/CD 自动化)或单元测试等技术集成,我们建议使用选择的 IDE 执行 Managed Service for Apache Flink。

您可以在选择的 IDE 中,使用 Apache Flink API 在 Managed Service for Apache Flink 构建采用 Java、Python 和 Scala 的应用程序。您可以在文档中找到有关如何使用 Flink Datastream 和 Table API 构建应用程序的指南。您可以选择创建 Flink 应用程序时使用的语言以及最能满足应用程序和操作需求的 API。如果您不确定,本节将提供高级指导来帮助您。

Apache Flink API 具有不同的抽象级别,这可能会影响您决定如何构建应用程序。这些 API 富有表现力且灵活,可以一起使用来构建您的应用程序。您不必只使用一个 Flink API。你可以在 Apache Flink 文档中了解有关 Flink API 的更多信息。

Flink 提供四个级别的 API 抽象:Flink SQL、Table API、DataStream API 和与 DataStream API 配合使用的 Process Function。Amazon Managed Service for Apache Flink 支持所有这些级别的抽象。建议尽可能从更高级别的抽象开始,但是有些 Flink 功能仅在 Datastream API 中可用,您可以在其中使用 Java、Python 或 Scala 创建应用程序。若为以下情况,您应考虑使用 Datastream API:

  • 需要对状态的精细控制

  • 想要利用异步调用外部数据库或端点的功能(例如用于推理)

  • 想要使用自定义计时器(例如,实施自定义窗口或后期事件处理)

  • 想要能够在不重置状态的情况下修改应用程序的流程

Apache Flink APIs diagram showing abstraction levels and programming languages for different APIs.
注意

使用 DataStream API 选择语言:

  • 无论选择哪种编程语言,SQL 都可以嵌入到任何 Flink 应用程序中。

  • 如果计划使用 DataStream API,那么 Python 并不支持所有连接器。

  • 如果您需要低延迟/高吞吐量,则无论使用哪种 API,都应考虑 Java/Scala。

  • 如果您计划在 Process Functions API 中使用异步 IO,则需要使用 Java。

API 的选择还会影响您在不必重置状态的情况下改进应用程序逻辑的能力。这取决于一项特定的功能,即在操作员上设置 UID 的功能,该功能仅在 Java 和 Python 的 DataStream API 中可用。有关更多信息,请参阅 Apache Flink 文档中的设置所有操作员的 UUID

开始使用流数据应用程序

您可以从创建持续读取和处理流数据的 Managed Service for Apache Flink应用程序开始。然后,使用所选的 IDE 编写代码,并使用实时流数据对其进行测试。您还可以配置 Managed Service for Apache Flink 要将结果发送到的目标。

首先,我们建议您阅读以下章节:

或者,您可以先创建一个 Managed Service for Apache Flink Studio 笔记本,该笔记本允许您实时交互式地查询数据流,并使用标准 SQL、Python 和 Scala 轻松构建和运行流处理应用程序。只需在 Amazon Web Services 管理控制台 中进行几次单击操作,即可启动无服务器笔记本来查询数据流,并在几秒钟内获得结果。首先,我们建议您阅读以下章节: