

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

# 从控制台开始使用 EMR Serverless
<a name="gs-console"></a>

本节介绍了如何使用 EMR Serverless，包括创建 EMR Studio。还介绍了如何提交作业运行和查看日志。

**Topics**
+ [步骤 1：创建 EMR Serverless 应用程序](#gs-application-console)
+ [步骤 2：提交作业运行或交互式工作负载](#gs-job-run-console)
+ [步骤 3：查看应用程序 UI 和日志](#gs-output-console)
+ [步骤 4：清除](#gs-cleanup-console)

## 步骤 1：创建 EMR Serverless 应用程序
<a name="gs-application-console"></a>

使用 EMR Serverless 创建新应用程序，如下所示。

1. [登录 Amazon Web Services 管理控制台 并打开亚马逊 EMR 控制台，网址为 /emr。https://console.aws.amazon.com](https://console.amazonaws.cn/emr)

1. 在左侧导航窗格中，选择 **EMR Serverless** 以导航到 EMR Serverless 登录页面。

1. 要创建或管理 EMR Serverless 应用程序，需使用 EMR Studio UI。
   + 如果您要创建应用程序 Amazon Web Services 区域 的地方已经有 EMR Studio，请选择 “**管理应用程序**” 以导航到您的 EMR Studio，或者选择要使用的工作室。
   + **如果您要创建应用程序 Amazon Web Services 区域 的地方没有 EMR Studio，请选择 “**开始”，然后选择 “创建” 并启动** Studio。**EMR Serverless 会为您创建一个 EMR Studio，用来创建和管理应用程序。

1. 在新选项卡中打开的**创建 Studio** UI 中，输入应用程序的名称、类型和发布版本。如果只想运行批处理作业，请选择**仅对批处理作业使用默认设置**。对于交互式工作负载，请选择**对交互式工作负载使用默认设置**。您还可以使用此选项在交互式应用程序上运行批处理作业。如果需要，您可以在以后更改这些设置。

   有关更多信息，请参阅[创建 Studio](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-studio-create-studio.html)。

1. 选择**创建应用程序**，创建您的第一个应用程序。

继续下一节 [步骤 2：提交作业运行或交互式工作负载](#gs-job-run-console)，提交作业运行或交互式工作负载。

## 步骤 2：提交作业运行或交互式工作负载
<a name="gs-job-run-console"></a>

------
#### [ Spark job run ]

在本教程中，我们使用 PySpark 脚本来计算多个文本文件中唯一单词的出现次数。公有的只读 S3 存储桶可同时存储脚本和数据集。

**运行 Spark 作业**

1. 使用以下命令将示例脚本 `wordcount.py` 上传到新存储桶。

   ```
   aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://{{amzn-s3-demo-bucket}}/scripts/
   ```

1. 完成 [步骤 1：创建 EMR Serverless 应用程序](#gs-application-console) 后，您将进入 EMR Studio 中的**应用程序详情**页面。在此页面上，选择**提交作业**选项。

1. 在**提交作业**页面上，完成以下操作。
   + 在**名称**字段中，输入要调用的作业运行名称。
   + 在**运行时角色**字段中，输入您在 [创建作业运行时角色](getting-started.md#gs-runtime-role) 中创建的角色名称。
   + 在**脚本位置**字段中，输入 `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
     ```

1. 要开始作业运行，请选择**提交作业**。

1. 在**作业运行**选项卡中，您应该看到状态为**正在运行**的新作业运行。

------
#### [ Hive job run ]

在本教程的这一部分，我们将创建一个表，插入几条记录，然后运行计数聚合查询。要运行 Hive 作业，先创建一个包含所有要作为单个作业的一部分运行的 Hive 查询的文件，将该文件上传到 S3，然后在启动 Hive 作业时指定此 S3 路径。

**运行 Hive 作业**

1. 创建一个名为 `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;
   ```

1. 使用以下命令将 `hive-query.ql` 上传到 S3 存储桶。

   ```
   aws s3 cp hive-query.ql s3://{{amzn-s3-demo-bucket}}/emr-serverless-hive/query/hive-query.ql
   ```

1. 完成 [步骤 1：创建 EMR Serverless 应用程序](#gs-application-console) 后，您将进入 EMR Studio 中的**应用程序详情**页面。在此页面上，选择**提交作业**选项。

1. 在**提交作业**页面上，完成以下操作。
   + 在**名称**字段中，输入要调用的作业运行名称。
   + 在**运行时角色**字段中，输入您在 [创建作业运行时角色](getting-started.md#gs-runtime-role) 中创建的角色名称。
   + 在**脚本位置**字段中，输入 `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"
                }
         }]
     }
     ```

1. 要开始运行作业，请选择**提交作业**。

1. 在**作业运行**选项卡中，您应该看到状态为**正在运行**的新作业运行。

------
#### [ Interactive workload ]

在 Amazon EMR 6.14.0 及更高版本中，您可以使用 EMR Studio 中托管的 Notebook 在 EMR Serverless 中运行 Spark 的交互式工作负载。有关权限和先决条件等更多信息，请参阅 [通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载](interactive-workloads.md)。

创建应用程序并设置所需权限后，请按以下步骤使用 EMR Studio 运行交互式 Notebook：

1. 导航到 EMR Studio 中的** Workspace**。如果仍需要配置 Amazon S3 存储位置和 [EMR Studio 服务角色](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-studio-service-role.html)，请选择屏幕顶部横幅中的**配置 Studio** 按钮。

1. 要访问 Notebook，请选择一个 Workspace 或创建一个新 Workspace。使用**快速启动**在新选项卡中打开 Workspace。

1. 转到新打开的选项卡。从左侧导航栏中选择**计算**图标。选择 EMR Serverless 作为**计算类型**。

1. 选择您在上一节中创建的交互式应用程序。

1. 在**运行时角色**字段中，输入 EMR Serverless 应用程序在运行作业时可代入的 IAM 角色名称。要了解有关运行时角色的更多信息，请参阅《Amazon EMR Serverless 用户指南》**中的[作业运行时角色](https://docs.amazonaws.cn/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

1. 选择**附加**。该过程可能需要一分钟。附加后，页面将会刷新。

1. 选择内核并启动 Notebook。您还可以浏览 EMR Serverless 上的示例 Notebook，将其复制到 Workspace。要访问示例 Notebook，请导航到左侧导航栏中的 **`{...}`** 菜单，然后浏览 Notebook文件名中包含 `serverless` 的 Notebook。

1. 在 Notebook 中，您可以访问驱动程序日志链接和指向 Apache Spark UI 链接，Apache Spark UI 是一个实时界面，提供了监控作业的指标。有关更多信息，请参阅《Amazon EMR Serverless 用户指南》**中的[监控 EMR Serverless 应用程序和作业](https://docs.amazonaws.cn/emr/latest/EMR-Serverless-UserGuide/app-job-metrics.html)。

将应用程序附加到 Studio Workspace 时，如果应用程序尚未运行，则会自动触发启动。您也可以预先启动应用程序，在将其附加到 Workspace 之前准备就绪。

------

## 步骤 3：查看应用程序 UI 和日志
<a name="gs-output-console"></a>

要查看应用程序 UI，先确定作业运行情况。该作业运行的第一行选项中提供了 **Spark UI** 或 **Hive Tez UI** 选项（取决于作业类型）。选择相应的选项。

如果选择 Spark UI，请选择**执行程序**选项卡以查看驱动程序和执行程序日志。如果选择 Hive Tez UI，请选择**所有任务**选项卡以查看日志。

一旦作业运行状态显示为**成功**，就可以在 S3 存储桶中查看作业的输出。

## 步骤 4：清除
<a name="gs-cleanup-console"></a>

虽然您创建的应用程序应在 15 分钟不活动后自动停止，但我们仍然建议您释放不打算再次使用的资源。

要删除应用程序，请导航到**列出应用程序**页面。选择您创建的应用程序，然后选择**操作→停止**以停止应用程序。应用程序处于 `STOPPED` 状态后，选择同一应用程序，然后选择**操作→删除**。

有关运行 Spark 和 Hive 作业的更多示例，请参阅 [运行 EMR Serverless 作业时使用 Spark 配置](jobs-spark.md) 和 [运行 EMR Serverless 作业时使用 Hive 配置](jobs-hive.md)。