开始使用 Amazon EMR Serverless - Amazon EMR

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

开始使用 Amazon EMR Serverless

本教程可帮助您在部署示例 Spark 或 Hive 工作负载时开始使用EMR无服务器。您将创建、运行和调试自己的应用程序。我们将在本教程的大部分内容中显示默认选项。

在启动EMR无服务器应用程序之前,请完成以下任务。

授予使用EMR无服务器的权限

要使用 EMR Serverless,你需要一个用户或IAM角色附加了授予EMR无服务器权限的策略。要创建用户并将相应的策略附加到该用户,请按照中的说明进行操作授予权限

为EMR无服务器准备存储

在本教程中,您将使用 S3 存储桶存储将使用EMR无服务器应用程序运行的示例 Spark 或 Hive 工作负载的输出文件和日志。要创建存储桶,请按照《亚马逊简单存储服务控制台用户指南》中创建存储中的说明进行操作。将对的任何进一步引amzn-s3-demo-bucket用替换为新创建的存储桶的名称。

创建 EMR Studio 来运行交互式工作负载

如果要使用 EMR Serverless 通过 EMR Studio 中托管的笔记本执行交互式查询,则需要指定 S3 存储桶和EMR无服务器创建工作区的最低服务角色。有关设置步骤,请参阅《Amazon EMR 管理指南》中的设置 EMR Studio。有关交互式工作负载的更多信息,请参阅通过 EMR Studio 使用EMR无服务器运行交互式工作负载

创建作业运行时角色

在 EMR Serverless 中运行的 Job 使用运行时角色,该角色在运行时为特定资源 AWS 服务 和资源提供精细权限。在本教程中,公有 S3 存储桶托管数据和脚本。存储桶amzn-s3-demo-bucket存储输出。

要设置作业运行时角色,请先使用信任策略创建一个运行时角色,以便 EMR Serverless 可以使用新角色。接下来,将所需的 S3 访问策略附加到该角色。以下步骤将指导您完成整个过程。

Console
  1. 导航到 IAM 控制台,网址为:https://console.aws.amazon.com/iam/

  2. 在左侧导航窗格中,选择 Roles(角色)

  3. 选择 Create role(创建角色)。

  4. 对于角色类型,选择自定义信任策略并粘贴以下信任策略。这样,提交到您的 Amazon EMR Serverless 应用程序的任务就可以 AWS 服务 代表您访问其他应用程序。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  5. 选择 “下一步” 导航至 “添加权限” 页面,然后选择 “创建策略”。

  6. 创建策略页面将在新选项卡上打开。将政策粘贴到JSON下方。

    重要

    将以下策略amzn-s3-demo-bucket中的存储桶名称替换为中创建的实际存储桶名称为EMR无服务器准备存储。这是 S3 访问的基本策略。有关更多作业运行时角色示例,请参阅Amazon EMR Serverless 的 Job 运行时角色

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessForEMRSamples", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*" ] }, { "Sid": "FullAccessToOutputBucket", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDataBases", "glue:CreateTable", "glue:GetTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": ["*"] } ] }
  7. 在 “查看政策” 页面上,输入策略的名称,例如EMRServerlessS3AndGlueAccessPolicy

  8. 刷新 “附加权限策略” 页面,然后选择EMRServerlessS3AndGlueAccessPolicy

  9. 在 “名称、查看和创建” 页面中,在 “角色名称” 中,输入角色的名称,例如EMRServerlessS3RuntimeRole。要创建此IAM角色,请选择创建角色

CLI
  1. 创建一个名为的文件emr-serverless-trust-policy.json,其中包含用于该IAM角色的信任策略。该文件应包含以下策略。

    { "Version": "2012-10-17", "Statement": [{ "Sid": "EMRServerlessTrustPolicy", "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" } }] }
  2. 创建一个名为的IAM角色EMRServerlessS3RuntimeRole。使用您在上一步中创建的信任策略。

    aws iam create-role \ --role-name EMRServerlessS3RuntimeRole \ --assume-role-policy-document file://emr-serverless-trust-policy.json

    在输出中记下 ARN。您在提交工作时使用新角色的,后面称为job-role-arn。ARN

  3. 创建一个名为的文件emr-sample-access-policy.json来定义工作负载的IAM策略。这提供了对存储在公共 S3 存储桶中的脚本和数据的读取权限以及对的读写访问权限。amzn-s3-demo-bucket

    重要

    将以下策略amzn-s3-demo-bucket中的存储桶名称替换为在为EMR无服务器准备存储... 中创建的实际存储桶名称 这是 Glue 和 AWS S3 访问的基本策略。有关更多作业运行时角色示例,请参阅Amazon EMR Serverless 的 Job 运行时角色

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadAccessForEMRSamples", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.elasticmapreduce", "arn:aws:s3:::*.elasticmapreduce/*" ] }, { "Sid": "FullAccessToOutputBucket", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDataBases", "glue:CreateTable", "glue:GetTable",Understanding default application behavior, including auto-start and auto-stop, as well as maximum capacity and worker configurations for configuring an application with &EMRServerless;. "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": ["*"] } ] }
  4. 使用您在步骤 3 中创建EMRServerlessS3AndGlueAccessPolicy的策略文件创建名为的策略。IAM请注意输出ARN中的,因为您将在下一步中使用新策略。ARN

    aws iam create-policy \ --policy-name EMRServerlessS3AndGlueAccessPolicy \ --policy-document file://emr-sample-access-policy.json

    请注意输出ARN中的新政策。你将在下一步policy-arn中将其替换。

  5. 将IAM策略附加EMRServerlessS3AndGlueAccessPolicy到作业运行时角色EMRServerlessS3RuntimeRole

    aws iam attach-role-policy \ --role-name EMRServerlessS3RuntimeRole \ --policy-arn policy-arn