本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 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
-
-
导航到 IAM 控制台,网址为:https://console.aws.amazon.com/iam/。
-
在左侧导航窗格中,选择 Roles(角色)。
-
选择 Create role(创建角色)。
-
对于角色类型,选择自定义信任策略并粘贴以下信任策略。这样,提交到您的 Amazon EMR Serverless 应用程序的任务就可以 AWS 服务 代表您访问其他应用程序。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
选择 “下一步” 导航至 “添加权限” 页面,然后选择 “创建策略”。
-
创建策略页面将在新选项卡上打开。将政策粘贴到JSON下方。
{
"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": ["*"]
}
]
}
-
在 “查看政策” 页面上,输入策略的名称,例如EMRServerlessS3AndGlueAccessPolicy
。
-
刷新 “附加权限策略” 页面,然后选择EMRServerlessS3AndGlueAccessPolicy
。
-
在 “名称、查看和创建” 页面中,在 “角色名称” 中,输入角色的名称,例如EMRServerlessS3RuntimeRole
。要创建此IAM角色,请选择创建角色。
- CLI
-
-
创建一个名为的文件emr-serverless-trust-policy.json
,其中包含用于该IAM角色的信任策略。该文件应包含以下策略。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "EMRServerlessTrustPolicy",
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "emr-serverless.amazonaws.com"
}
}]
}
-
创建一个名为的IAM角色EMRServerlessS3RuntimeRole
。使用您在上一步中创建的信任策略。
aws iam create-role \
--role-name EMRServerlessS3RuntimeRole \
--assume-role-policy-document file://emr-serverless-trust-policy.json
在输出中记下 ARN。您在提交工作时使用新角色的,后面称为job-role-arn
。ARN
-
创建一个名为的文件emr-sample-access-policy.json
来定义工作负载的IAM策略。这提供了对存储在公共 S3 存储桶中的脚本和数据的读取权限以及对的读写访问权限。amzn-s3-demo-bucket
{
"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": ["*"]
}
]
}
-
使用您在步骤 3 中创建EMRServerlessS3AndGlueAccessPolicy
的策略文件创建名为的策略。IAM请注意输出ARN中的,因为您将在下一步中使用新策略。ARN
aws iam create-policy \
--policy-name EMRServerlessS3AndGlueAccessPolicy \
--policy-document file://emr-sample-access-policy.json
请注意输出ARN中的新政策。你将在下一步policy-arn
中将其替换。
-
将IAM策略附加EMRServerlessS3AndGlueAccessPolicy
到作业运行时角色EMRServerlessS3RuntimeRole
。
aws iam attach-role-policy \
--role-name EMRServerlessS3RuntimeRole \
--policy-arn policy-arn