教程:将 Studio 笔记本部署为具有持久状态的 Apache Flink 应用程序的托管服务 - Managed Service for Apache Flink

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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:将 Studio 笔记本部署为具有持久状态的 Apache Flink 应用程序的托管服务

以下教程演示了如何将 Studio Notebook 部署为具有持久状态的 Managed Service for Apache Flink 应用程序。

满足先决条件

使用 Kinesis Data Streams 或 Amazon MSK 按照中的说明创建新的 Studio 笔记本。教程:在适用于 Apache Flink 的托管服务中创建 Studio 笔记本为 Studio 笔记本命名ExampleTestDeploy

使用 AWS Management Console部署具有持久状态的应用程序

  1. 在 “应用程序代码位置”(控制台中为可选下添加要存储打包代码的 S3 存储桶位置。这样就可以直接从笔记本部署和运行应用程序的步骤。

  2. 向应用程序角色添加所需的权限,以启用您用于读取和写入 Amazon S3 存储桶的角色,以及启动Managed Service for Apache Flink应用程序:

    • 亚马逊 3 FullAccess

    • 亚马逊托管-flinkFullAccess

    • 访问您的来源、目的地VPCs以及(如果适用)。有关更多信息,请参阅 查看 Studio 笔记本的IAM权限

  3. 使用下面的示例代码:

    %flink.ssql(type=update) CREATE TABLE exampleoutput ( 'ticket' VARCHAR, 'price' DOUBLE ) WITH ( 'connector' = 'kinesis', 'stream' = 'ExampleOutputStream', 'aws.region' = 'us-east-1', 'scan.stream.initpos' = 'LATEST', 'format' = 'json' ); INSERT INTO exampleoutput SELECT ticker, price FROM exampleinputstream
  4. 启动此功能后,您将在笔记本中每张笔记的右上角看到一个新的下拉列表,上面写着笔记本的名称。您可执行以下操作:

    • 在中查看 Studio 笔记本的设置 AWS Management Console。

    • 制作您的 Zeppelin Note 并将其导出到 Amazon S3。此时,请为您的应用程序提供一个名称,然后选择 “生成并导出”。导出完成后,您将收到通知。

    • 如果需要,您可以在 Amazon S3 中查看和运行对可执行文件的任何其他测试。

    • 构建完成后,您将能够将代码部署为具有持久状态和自动扩展功能的 Kinesis 流媒体应用程序。

    • 使用下拉列表并选择将 Zeppelin Note 部署为 Kinesis 流式应用程序。查看应用程序名称并选择通过 AWS 控制台部署

    • 这将引导您进入为 Apache Flink 应用程序创建托管服务的 AWS Management Console 页面。请注意,应用程序名称、并行度、代码位置、默认 Glue DBVPC(如果适用)和IAM角色都已预先填充。验证IAM角色是否具有访问您的源和目标所需的权限。默认情况下,快照处于启用状态,以实现持久的应用程序状态管理。

    • 选择创建应用程序

    • 您可以选择配置和修改任何设置,然后选择运行以启动您的流媒体应用程序。

使用 AWS CLI部署具有持久状态的应用程序

要使用部署应用程序 AWS CLI,您必须更新 AWS CLI 以使用与 Beta 2 信息一起提供的服务模型。有关如何使用更新的服务模型的信息,请参阅完成先决条件

以下示例代码将创建一个新的 Studio 笔记本:

aws kinesisanalyticsv2 create-application \ --application-name <app-name> \ --runtime-environment ZEPPELIN-FLINK-3_0 \ --application-mode INTERACTIVE \ --service-execution-role <iam-role> --application-configuration '{ "ZeppelinApplicationConfiguration": { "CatalogConfiguration": { "GlueDataCatalogConfiguration": { "DatabaseARN": "arn:aws:glue:us-east-1:<account>:database/<glue-database-name>" } } }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } }, "DeployAsApplicationConfiguration": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::<s3bucket>", "BasePath": "/something/" } }, "VpcConfigurations": [ { "SecurityGroupIds": [ "<security-group>" ], "SubnetIds": [ "<subnet-1>", "<subnet-2>" ] } ] }' \ --region us-east-1

以下代码示例将启动一个新的 Studio 笔记本:

aws kinesisanalyticsv2 start-application \ --application-name <app-name> \ --region us-east-1 \ --no-verify-ssl

以下代码返回应用程序的 URL Apache Zeppelin 笔记本页面的:

aws kinesisanalyticsv2 create-application-presigned-url \ --application-name <app-name> \ --url-type ZEPPELIN_UI_URL \ --region us-east-1 \ --no-verify-ssl