配置 Flink - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

配置 Flink

建议您使用配置文件配置 Flink。例如,Flink的主配置文件称为 flink-conf.yaml。这是使用 Amazon EMR 配置API。

使用 AWS CLI 配置用于 Flink 的任务槽的数目

  1. 创建文件 configurations.json 并输入以下内容:

    [ { "Classification": "flink-conf", "Properties": { "taskmanager.numberOfTaskSlots":"2" } } ]
  2. 接下来,使用以下配置创建集群:

    aws emr create-cluster --release-label emr-5.31.0 \ --applications Name=Flink \ --configurations file://./configurations.json \ --region us-east-1 \ --log-uri s3://myLogUri \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes KeyName=YourKeyName,InstanceProfile=EMR_EC2_DefaultRole
注意

也可以使用 Flink API 更改某些配置。有关更多信息,请参阅 Flink 文档中的基本 API 概念

使用 Amazon EMR 版本 5.21.0 以及更高版本,您可以覆盖集群配置,并为运行的集群中的每个实例组指定更多配置分类。您可以使用 Amazon EMR 控制台、AWS Command Line Interface (AWS CLI) 或 AWS 开发工具包来实现此操作。有关更多信息,请参阅为正在运行的实例中的实例组提供配置

作为应用程序所有者,您最了解应将哪些资源分配给 Flink 中的任务。在本文档的示例中,使用与用于应用程序的从属实例的数目相同的任务。通常,我们建议对初始并行级别执行此操作,但您也可以使用任务槽来增加并行粒度,它一般不应超过每实例虚拟核心数。有关 Flink 架构的更多信息,请参阅 Flink 文档中的概念

目前,可在 Amazon EMR 配置 API 中配置的文件包括:

  • flink-conf.yaml

  • log4j.properties

  • log4j-yarn-session.properties

  • log4j-cli.properties

的 JobManager 在主节点故障转移过程中,Flink的 具有多个主节点的 EMR 集群. 从AmazonEMR5.28.0版开始, JobManager 高可用性也被自动启用。无需手动配置。

有 Amazon EMR 版本5.27.0或更早, JobManager 是单点故障。当 JobManager 失败,它将丢失所有作业状态,并且不会恢复正在运行的作业。您可以启用 JobManager 通过配置应用程序尝试计数、检查点和启用 ZooKeeper 作为Flink的状态存储,如以下示例所示:

[ { "Classification": "yarn-site", "Properties": { "yarn.resourcemanager.am.max-attempts": "10" } }, { "Classification": "flink-conf", "Properties": { "yarn.application-attempts": "10", "high-availability": "zookeeper", "high-availability.zookeeper.quorum": "%{hiera('hadoop::zk')}", "high-availability.storageDir": "hdfs:///user/flink/recovery", "high-availability.zookeeper.path.root": "/flink" } } ]

您必须同时为 YARN 和 Flink 配置最大的应用程序主尝试次数。有关更多信息,请参阅 YARN 集群高可用性的配置。您可能还希望配置Flink检查点以重新启动 JobManager 从以前完成的检查点恢复正在运行的作业。有关更多信息,请参阅开展 Flink 检查点检验