从控制台开始使用 EMR Serverless
本节介绍了如何使用 EMR Serverless,包括创建 EMR Studio。还介绍了如何提交作业运行和查看日志。
步骤 1:创建 EMR Serverless 应用程序
使用 EMR Serverless 创建新应用程序,如下所示。
-
通过以下链接登录 AWS Management Console 并打开 Amazon EMR 控制台:https://console.aws.amazon.com/emr。
-
在左侧导航窗格中,选择 EMR Serverless 以导航到 EMR Serverless 登录页面。
-
要创建或管理 EMR Serverless 应用程序,需使用 EMR Studio UI。
-
在新选项卡中打开的创建 Studio UI 中,输入应用程序的名称、类型和发布版本。如果只想运行批处理作业,请选择仅对批处理作业使用默认设置。对于交互式工作负载,请选择对交互式工作负载使用默认设置。您还可以使用此选项在交互式应用程序上运行批处理作业。如果需要,您可以在以后更改这些设置。
有关更多信息,请参阅创建 Studio。
-
选择创建应用程序,创建您的第一个应用程序。
继续下一节 步骤 2:提交作业运行或交互式工作负载,提交作业运行或交互式工作负载。
步骤 2:提交作业运行或交互式工作负载
- Spark job run
-
在本教程中,我们将使用 Pyspark 脚本来计算多个文本文件中唯一单词的出现次数。公有的只读 S3 存储桶可同时存储脚本和数据集。
运行 Spark 作业
-
使用以下命令将示例脚本 wordcount.py
上传到新存储桶。
aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket
/scripts/
-
完成 步骤 1:创建 EMR Serverless 应用程序 后,您将进入 EMR Studio 中的应用程序详情页面。在此页面上,选择提交作业选项。
-
在提交作业页面上,完成以下操作。
-
在名称字段中,输入要调用的作业运行名称。
-
在运行时角色字段中,输入您在 创建作业运行时角色 中创建的角色名称。
-
在脚本位置字段中,输入 s3://amzn-s3-demo-bucket
/scripts/wordcount.py
作为 S3 URI。
-
在脚本参数字段中,输入 ["s3://amzn-s3-demo-bucket
/emr-serverless-spark/output"]
。
-
在 Spark 属性部分,选择以文本形式编辑,然后输入以下配置。
--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1
-
要开始作业运行,请选择提交作业。
-
在作业运行选项卡中,您应该看到状态为正在运行的新作业运行。
- Hive job run
-
在本教程的这一部分,我们将创建一个表,插入几条记录,然后运行计数聚合查询。要运行 Hive 作业,先创建一个包含所有要作为单个作业的一部分运行的 Hive 查询的文件,将该文件上传到 S3,然后在启动 Hive 作业时指定此 S3 路径。
运行 Hive 作业
-
创建一个名为 hive-query.ql
的文件,其中包含您要在 Hive 作业中运行的所有查询。
create database if not exists emrserverless;
use emrserverless;
create table if not exists test_table(id int);
drop table if exists Values__Tmp__Table__1;
insert into test_table values (1),(2),(2),(3),(3),(3);
select id, count(id) from test_table group by id order by id desc;
-
使用以下命令将 hive-query.ql
上传到 S3 存储桶。
aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql
-
完成 步骤 1:创建 EMR Serverless 应用程序 后,您将进入 EMR Studio 中的应用程序详情页面。在此页面上,选择提交作业选项。
-
在提交作业页面上,完成以下操作。
-
在名称字段中,输入要调用的作业运行名称。
-
在运行时角色字段中,输入您在 创建作业运行时角色 中创建的角色名称。
-
在脚本位置字段中,输入 s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql
作为 S3 URI。
-
在 Hive 属性部分,选择以文本形式编辑,然后输入以下配置。
--hiveconf hive.log.explain.output=false
-
在作业属性部分,选择以文本形式编辑,然后输入以下 JSON。
{
"applicationConfiguration":
[{
"classification": "hive-site",
"properties": {
"hive.exec.scratchdir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch",
"hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse",
"hive.driver.cores": "2",
"hive.driver.memory": "4g",
"hive.tez.container.size": "4096",
"hive.tez.cpu.vcores": "1"
}
}]
}
-
要开始运行作业,请选择提交作业。
-
在作业运行选项卡中,您应该看到状态为正在运行的新作业运行。
- Interactive workload
-
在 Amazon EMR 6.14.0 及更高版本中,您可以使用 EMR Studio 中托管的笔记本在 EMR Serverless 中运行 Spark 的交互式工作负载。有关权限和先决条件等更多信息,请参阅 通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载。
创建应用程序并设置所需权限后,请按以下步骤使用 EMR Studio 运行交互式笔记本:
-
导航到 EMR Studio 中的工作区。如果仍需要配置 Amazon S3 存储位置和 EMR Studio 服务角色,请选择屏幕顶部横幅中的配置 Studio 按钮。
-
要访问笔记本,请选择一个工作区或创建一个新工作区。使用快速启动在新选项卡中打开工作区。
-
转到新打开的选项卡。从左侧导航栏中选择计算图标。选择 EMR Serverless 作为计算类型。
-
选择您在上一节中创建的交互式应用程序。
-
在运行时角色字段中,输入 EMR Serverless 应用程序在运行作业时可代入的 IAM 角色名称。要了解有关运行时角色的更多信息,请参阅《Amazon EMR Serverless 用户指南》中的作业运行时角色。
-
选择附加。该过程可能需要一分钟。附加后,页面将会刷新。
-
选择内核并启动笔记本。您还可以浏览 EMR Serverless 上的示例笔记本,将其复制到工作区。要访问示例笔记本,请导航到左侧导航栏中的 {...}
菜单,然后浏览笔记本文件名中包含 serverless
的笔记本。
-
在笔记本中,您可以访问驱动程序日志链接和指向 Apache Spark UI 链接,Apache Spark UI 是一个实时界面,提供了监控作业的指标。有关更多信息,请参阅《Amazon EMR Serverless 用户指南》中的监控 EMR Serverless 应用程序和作业。
将应用程序附加到 Studio 工作区时,如果应用程序尚未运行,则会自动触发启动。您也可以预先启动应用程序,在将其附加到工作区之前准备就绪。
步骤 3:查看应用程序 UI 和日志
要查看应用程序 UI,先确定作业运行情况。该作业运行的第一行选项中提供了 Spark UI 或 Hive Tez UI 选项(取决于作业类型)。选择相应的选项。
如果选择 Spark UI,请选择执行程序选项卡以查看驱动程序和执行程序日志。如果选择 Hive Tez UI,请选择所有任务选项卡以查看日志。
一旦作业运行状态显示为成功,就可以在 S3 存储桶中查看作业的输出。
步骤 4:清除
虽然您创建的应用程序应在 15 分钟不活动后自动停止,但我们仍然建议您释放不打算再次使用的资源。
要删除应用程序,请导航到列出应用程序页面。选择您创建的应用程序,然后选择操作→停止以停止应用程序。应用程序处于 STOPPED
状态后,选择同一应用程序,然后选择操作→删除。
有关运行 Spark 和 Hive 作业的更多示例,请参阅 运行 EMR Serverless 作业时使用 Spark 配置 和 运行 EMR Serverless 作业时使用 Hive 配置。