

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從主控台開始使用 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. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr)：// 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中，選擇 **EMR Serverless** 以導覽至 EMR Serverless 登陸頁面。

1. 若要建立或管理 EMR Serverless 應用程式，您需要 EMR Studio UI。
   + 如果您在 AWS 區域 要建立應用程式的 中已有 EMR Studio，請選取**管理應用程式**以導覽至您的 EMR Studio，或選取您要使用的 Studio。
   + 如果您在 AWS 區域 要建立應用程式的 中沒有 EMR Studio，請選擇**開始使用**，然後選擇**建立並啟動 Studio**。EMR Serverless 會為您建立 EMR Studio，讓您可以建立和管理應用程式。

1. 在在新標籤中開啟的**建立 Studio** UI 中，輸入應用程式的名稱、類型和發行版本。如果您只想要執行批次任務，請選取**僅對批次任務使用預設設定**。針對互動式工作負載，選取**使用互動式工作負載的預設設定**。您也可以使用此選項在已啟用互動式的應用程式上執行批次任務。如果需要，您可以稍後變更這些設定。

   如需詳細資訊，請參閱[建立 Studio](https://docs.aws.amazon.com/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**，然後輸入下列 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 中託管的筆記本來執行 EMR Serverless 中 Spark 的互動式工作負載。如需包含許可和先決條件的詳細資訊，請參閱 [透過 EMR Studio 使用 EMR Serverless 執行互動式工作負載](interactive-workloads.md)。

建立應用程式並設定必要的許可後，請使用下列步驟透過 EMR Studio 執行互動式筆記本：

1. 導覽至 EMR Studio **中的工作區**索引標籤。如果您仍然需要設定 Amazon S3 儲存位置和 [EMR Studio 服務角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-service-role.html)，請選取畫面頂端橫幅中的**設定 Studio** 按鈕。

1. 若要存取筆記本，請選取工作區或建立新的工作區。使用**快速啟動**在新索引標籤中開啟工作區。

1. 前往新開啟的索引標籤。從左側導覽選取**運算**圖示。選取 EMR Serverless 做為**運算類型**。

1. 選取您在上一節中建立的互動式應用程式。

1. 在**執行期角色**欄位中，輸入 EMR Serverless 應用程式可為任務執行擔任的 IAM 角色名稱。若要進一步了解執行期角色，請參閱《*Amazon EMR Serverless 使用者指南*》中的[任務執行期角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

1. 選取**連接**。這可能需要一分鐘的時間。連接時，頁面會重新整理。

1. 挑選核心並啟動筆記本。您也可以在 EMR Serverless 上瀏覽範例筆記本，並將其複製到工作區。若要存取範例筆記本，請導覽至左側導覽中的**`{...}`**選單，然後瀏覽筆記本檔案名稱`serverless`中具有 的筆記本。

1. 在筆記本中，您可以存取驅動程式日誌連結和 Apache Spark UI 的連結，Apache Spark UI 是一種即時界面，可提供監控任務的指標。如需詳細資訊，請參閱《*Amazon* [EMR Serverless 使用者指南》中的監控 EMR Serverless 應用程式和任務](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/app-job-metrics.html)。

當您將應用程式連接到 Studio 工作區時，如果應用程式尚未執行，應用程式會自動啟動觸發。您也可以在將應用程式連接至工作區之前，預先啟動應用程式並保持就緒狀態。

------

## 步驟 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)。