

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

# 利用现有集群/EMR-S 应用程序创建目标 EMR 集群/EMR-S 应用程序
<a name="emr-spark-upgrade-agent-target-cluster"></a>

如果您已经有一个运行源 Spark 版本的 EMR EC2 集群，则可以克隆它以创建一个配置相同但更新了 EMR 发行版本的新集群，以便在升级过程中运行验证步骤。

## 步骤：
<a name="emr-spark-upgrade-agent-clone-cluster-steps"></a>

1. 登录 AWS 管理控制台 并打开 Amazon EMR 控制台。

1. 在左侧导航窗格中，选择 EMR on 下的集群。 EC2

1. 从集群列表中：
   + 如果需要，请使用搜索或筛选器来查找您的集群。
   + 选中要克隆的集群旁边的复选框。
   + “克隆” 选项将出现在列表的顶部。选择克隆。
   + 如果集群已配置步骤，请选择包括步骤，然后选择继续，将这些步骤与其他集群设置一起克隆。

1. 查看已从原始集群复制的新集群的设置。

1. 将 Amazon EMR 发布版本更新到目标版本。

1. 作为提高成本效益的最佳实践，在将集群配置为根据工作负载需求自动调整容量时，可以考虑启用自动扩展。

1. 如果您对配置感到满意，请选择创建集群以启动新集群。

1. 等待集群进入运行状态并记下集群 ID。当系统提示您验证更新的应用程序时，请向代理提供此 ID。

1. [如果您更喜欢从头开始创建新集群，请参阅 EMR 文档： https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html。](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)

## 将 EMR 无服务器应用程序克隆到目标发行版
<a name="emr-spark-upgrade-agent-clone-serverless"></a>

没有直接的方法可以将 EMR Serverless 应用程序克隆到具有不同 EMR 发行版本的新应用程序。相反，您可以使用 EMR Serverless SDK/CLI 或控制台来创建新应用程序并重复使用现有应用程序中的配置。

以下是一些入门的帮助 CLI 命令：

```
aws emr-serverless get-application --application-id XXX > old-config.json  
cat old-config.json | jq '{  
  name: (.application.name + "<suffix to differentiate name from old application>"),  
  releaseLabel: "<target EMR release version>",  
  type: .application.type,  
  initialCapacity: .application.initialCapacity,  
  maximumCapacity: .application.maximumCapacity,  
  autoStartConfiguration: .application.autoStartConfiguration,  
  autoStopConfiguration: .application.autoStopConfiguration,  
  tags: .application.tags,  
  architecture: .application.architecture,  
  runtimeConfiguration: .application.runtimeConfiguration,  
  monitoringConfiguration: .application.monitoringConfiguration  
}' > new-config.json  
aws emr-serverless create-application --cli-input-json file://new-config.json
```

**注意：**确保新应用程序的任务执行角色允许 EMR Serverless 担任该角色。查看角色的信任策略。如果您要重复使用旧应用程序中的相同任务执行角色，请更新信任策略以包含新应用程序，如下所示：

```
#Replace the old application id and new application id in the policy  
{  
    "Version": "2012-10-17",		 	 	  
    "Statement": [  
        {  
            "Sid": "ServerlessTrustPolicy",  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "emr-serverless.amazonaws.com"  
            },  
            "Action": "sts:AssumeRole",  
            "Condition": {  
                "StringLike": {  
                    "aws:SourceArn": [  
                        "arn:aws:emr-serverless:us-east-1:<account>:/applications/<old application id>",  
                        "arn:aws:emr-serverless:us-east-1:<account>:/applications/<new application id>"  
                    ]  
                }  
            }  
        }  
    ]  
}
```