

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

# Presto
<a name="emr-presto"></a>

**重要**  
Presto 是舊版的 Trino，仍然可與 Amazon EMR 搭配使用。不過，我們強烈建議 Trino 繼續使用 Amazon EMR。另請注意，Trino 和 Presto 無法同時在相同的叢集上執行。如需詳細資訊，請參閱 [Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-trino.html)。

[Presto](https://aws.amazon.com/big-data/what-is-presto/) 是一種快速 SQL 查詢引擎，專為針對多個來源的大型資料集進行互動式分析查詢所設計。如需詳細資訊，請參閱 [Presto 網站](https://prestodb.io/)。Presto 包含於 Amazon EMR 5.0.0 版及更高版本。舊版中包含的 Presto 為沙盒應用程式。如需詳細資訊，請參閱[Amazon EMR 4.x 發行版本](emr-release-4x.md)。除了 Presto 之外，Amazon EMR 發行版本 6.1.0 及更新版本還支援 [Trino](https://trino.io/)。如需詳細資訊，請參閱[PrestoDB 安裝](emr-presto-considerations.md#emr-prestodb-prestosql)。

以下表格列出了 Amazon EMR 7.x 系列最新版本中包含的 Presto 版本，以及 Amazon EMR 隨 Presto 一起安裝的元件。

如需此版本中與 Presto 一起安裝的元件版本，請參閱[發行版本 7.12.0 元件版本。](emr-7120-release.md)


**emr-7.12.0 的 Presto 版本資訊**  

| Amazon EMR 發行標籤 | Presto 版本 | 與 Presto 一起搭配安裝的元件 | 
| --- | --- | --- | 
| emr-7.12.0 | Presto 0.287-amzn-6 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 

下表列出 Amazon EMR 6.x 系列最新版本中包含的 Presto 版本，以及 Amazon EMR 隨 Presto 一起安裝的元件。

如需此版本中與 Presto 一起搭配安裝的元件版本，請參閱[發行版本 6.15.0 元件版本](emr-6150-release.md)。


**Presto emr-6.15.0 版本資訊**  

| Amazon EMR 發行標籤 | Presto 版本 | 與 Presto 一起搭配安裝的元件 | 
| --- | --- | --- | 
| emr-6.15.0 | Presto 0.283-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 

下表列出 Amazon EMR 5.x 系列最新版本中包含的 Presto 版本，以及 Amazon EMR 隨 Presto 一起安裝的元件。

如需此版本中與 Presto 一起安裝的元件版本，請參閱[發行版本 5.36.2 元件版本。](emr-5362-release.md)


**emr-5.36.2 的 Presto 版本資訊**  

| Amazon EMR 發行標籤 | Presto 版本 | 與 Presto 一起搭配安裝的元件 | 
| --- | --- | --- | 
| emr-5.36.2 | Presto 0.267-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 

**Topics**
+ [搭配 Glue Data Catalog AWS 使用 Presto](emr-presto-glue.md)
+ [使用 S3 Select Pushdown 搭配 Presto 以提升效能](emr-presto-s3select.md)
+ [新增資料庫連接器](presto-adding-db-connectors.md)
+ [使用 SSL/TLS 並設定 Presto on Amazon EMR 的 LDAPS](presto-ssl.md)
+ [啟動 Presto 嚴格模式](presto-strict-mode.md)
+ [在 Presto 中處理 Spot 執行個體遺失](presto-spot-loss.md)
+ [使用 Presto 自動擴展搭配逐漸除役](presto-graceful-autoscale.md)
+ [使用 Presto on Amazon EMR 的考量](emr-presto-considerations.md)
+ [Presto 版本歷史記錄](Presto-release-history.md)

# 搭配 Glue Data Catalog AWS 使用 Presto
<a name="emr-presto-glue"></a>

使用 Amazon EMR 發行版本 5.10.0 及更新版本，您可以將 AWS Glue Data Catalog 指定為 Presto 的預設 Hive 中繼存放區。若您需要持久的中繼存放區或由不同叢集、服務、應用程式或 AWS 帳戶帳戶共用的中繼存放區，建議使用此組態。

AWS Glue 是一種全受管擷取、轉換和載入 (ETL) 服務，可讓您以簡單且經濟實惠的方式分類資料、清理資料、擴充資料，並在各種資料存放區之間可靠地移動資料。 AWS Glue Data Catalog 提供跨各種資料來源和資料格式的統一中繼資料儲存庫，與 Amazon EMR 以及 Amazon RDS、Amazon Redshift、Redshift Spectrum、Athena 以及與 Apache Hive 中繼存放區相容的任何應用程式整合。 AWS Glue 爬蟲程式可以從 Amazon S3 中的來源資料自動推斷結構描述，並將相關聯的中繼資料存放在 Data Catalog 中。如需 Data Catalog 的詳細資訊，請參閱《[Glue AWS 開發人員指南》中的填入 Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html)。 *AWS *

Glue AWS 會另外收費。儲存和存取 Data Catalog 中中繼資料的每月費率、Glue ETL AWS 任務和爬蟲程式執行時間每分鐘計費的每小時費率，以及每個佈建開發端點每分鐘計費的每小時費率。Data Catalog 可讓您免費儲存多達一百萬個物件。如果您存放超過一百萬個物件，之後每 100,000 個物件會向您收費 1 美元。Data Catalog 中的物件是資料表、分割區或資料庫。如需詳細資訊，請參閱 [Glue 定價](https://aws.amazon.com/glue/pricing)。

**重要**  
如果您在 2017 年 8 月 14 日之前使用 Amazon Athena 或 Amazon Redshift Spectrum 建立資料表，資料庫和資料表會存放在 Athena 受管目錄中，這與 AWS Glue Data Catalog 不同。若要整合 Amazon EMR 與這些資料表，您必須升級至 AWS Glue Data Catalog。如需詳細資訊，請參閱《*Amazon Athena 使用者指南*》中的[升級至 AWS Glue Data Catalog](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)。

## 將 AWS Glue Data Catalog 指定為中繼存放區
<a name="emr-presto-glue-configure"></a>

您可以使用 AWS AWS 管理主控台 AWS CLI或 Amazon EMR API，將 Glue Data Catalog 指定為中繼存放區。當使用 CLI 或 API 時，您要使用 Presto 的組態分類來指定 Data Catalog。此外，使用 Amazon EMR 5.16.0 和更新版本時，您可以使用組態分類在不同的 中指定資料目錄 AWS 帳戶。在使用主控台時，您可以透過**進階選項**或**快速選項**指定 Data Catalog。

------
#### [ Console ]

**使用新主控台將 AWS Glue Data Catalog 指定為 Hive 中繼存放區**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中的 **EC2 上的 EMR** 下方，選擇**叢集**，然後選擇**建立叢集**。

1. 在**應用程式套件**下方，選擇 **Presto**。

1. 在 **AWS Glue Data Catalog 設定**下方，選取**用於 Presto 資料表中繼資料**核取方塊。

1. 選擇適用於您的叢集的任何其他選項。

1. 若要啟動您的叢集，請選擇**建立叢集**。

------
#### [ CLI ]

**使用 將 AWS Glue Data Catalog 指定為預設 Hive 中繼存放區 AWS CLI**

如需了解在建立叢集時指定以下組態分類的範例，請參閱 [設定應用程式](emr-configure-apps.md)。

**Amazon EMR 5.16.0 版及更高版本**
+ 將 `hive.metastore` 屬性設定為 `glue`，如以下 JSON 範例中所示。

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore": "glue"
      }
    }
  ]
  ```

  若要在不同的 中指定 Data Catalog AWS 帳戶，請新增 `hive.metastore.glue.catalogid` 屬性，如下列 JSON 範例所示。使用 Data Catalog 的 AWS 帳戶取代 `acct-id`。使用 Amazon EMR 版本 5.15.0 和更高版本時，無法在另一個 AWS 帳戶 中使用 Data Catalog。

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore": "glue",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

  **Amazon EMR 5.10.0 到 5.15.0**

  將 `hive.metastore.glue.datacatalog.enabled` 屬性設定為 `true`，如以下 JSON 範例中所示：

  ```
  [
    {
      "Classification": "presto-connector-hive",
      "Properties": {
        "hive.metastore.glue.datacatalog.enabled": "true"
      }
    }
  ]
  ```

  **使用 PrestoSQL (Trino) 的 Amazon EMR 6.1.0 及更高版本**

  從 EMR 版本 6.1.0 開始，PrestoSQL 也支援 Glue 作為預設的 Hive 中繼存放區。使用 `prestosql-connector-hive` 組態分類並且將 `hive.metastore` 屬性設定為 `glue`，如以下 JSON 範例所示。

  Amazon EMR 版本 6.4.0 及更高版本使用新名稱 Trino，而非 PrestoSQL。如果您使用 Trino，請使用 `trino-connector-hive` 取代以下組態分類中的 `prestosql-connector-hive`。

  ```
  [
    {
      "Classification": "prestosql-connector-hive",
      "Properties": {
        "hive.metastore": "glue"
      }
    }
  ]
  ```

若要在長期執行的叢集上切換中繼存放區，您可以透過手動方式，首先連線到主節點，接著在 `/etc/presto/conf/catalog/hive.properties` 檔案中直接編輯屬性值，然後重新啟動 Presto 伺服器 (`sudo restart presto-server`)，再來就是為您的發行版本設定適合的值。如果是在 Amazon EMR 5.15.0 和更早版本使用此方法，請確定 `hive.table-statistics-enabled` 已設為 `false`。當使用發行版本為 5.16.0 及更新版本時，這個設定不是必要設定；但無論使用哪種版本，都不支援表格和分割區統計資訊。

------

## IAM 許可
<a name="emr-hive-glue-permissions"></a>

叢集的 EC2 執行個體描述檔必須具有 Glue 動作的 IAM AWS 許可。此外，如果您啟用 AWS Glue Data Catalog 物件的加密，也必須允許該角色加密、解密和產生 AWS KMS key 用於加密的 。

### Glue AWS 動作的許可
<a name="emr-hive-glue-permissions-actions"></a>

如果您將預設的 EC2 執行個體設定檔用於 Amazon EMR，就不需要採取任何動作。連接到 的 `AmazonElasticMapReduceforEC2Role`受管政策`EMR_EC2_DefaultRole`允許所有必要的 AWS Glue 動作。不過，如果您指定自訂 EC2 執行個體描述檔和許可，則必須設定適當的 AWS Glue 動作。使用 `AmazonElasticMapReduceforEC2Role` 受管政策做為起點。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)。

### 加密和解密 AWS Glue Data Catalog 的許可
<a name="emr-hive-glue-permissions-encrypt"></a>

您的執行個體設定檔需要許可，以便使用您的金鑰來加密和解密資料。如若下列兩個陳述式均適用，則您*不*需要設定這些許可：
+ 您可以使用 Glue AWS 的受管金鑰啟用 AWS Glue Data Catalog 物件的加密。
+ 您可以使用與 Glue Data Catalog AWS AWS 帳戶 位於相同 中的叢集。

否則，您必須新增以下陳述式至附接至您的 EC2 執行個體設定檔的許可政策。

如需 AWS Glue Data Catalog 加密的詳細資訊，請參閱《*AWS Glue 開發人員指南*》中的[加密您的資料目錄](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)。

### 資源型許可
<a name="emr-hive-glue-permissions-resource"></a>

如果您在 AWS Amazon EMR 中使用 Glue 搭配 Hive、Spark 或 Presto， AWS Glue 支援以資源為基礎的政策來控制對 Data Catalog 資源的存取。這些資源包含資料庫、資料表、連線和使用者定義的函數。如需詳細資訊，請參閱《AWS Glue 開發人員指南》**中的 [AWS Glue 資源政策](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。

使用資源型政策限制從 Amazon EMR 內存取 AWS Glue 時，您在許可政策中指定的委託人必須是與建立叢集時指定的 EC2 執行個體描述檔相關聯的角色 ARN。例如，對於附接至型錄的資源型政策，您可以使用下列範例所示的格式，將叢集 EC2 執行個體的預設服務角色的角色 ARN (*EMR\$1EC2\$1DefaultRole*) 指定為 `Principal`：

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id* 可以與 Glue AWS 帳戶 ID 不同。這可讓您從不同帳戶中的 EMR 叢集進行存取。您可以指定多個主體，每個主體都來自不同的帳戶。

## 使用 Glue Data Catalog AWS 時的考量事項
<a name="emr-presto-glue-knownissues"></a>

使用 AWS Glue Data Catalog 做為具有 Presto 的中繼存放區時，請考慮下列項目：
+ 不支援從 Glue AWS 中重新命名資料表。
+ 當您建立 Hive 資料表而未指定 `LOCATION` 時，資料表資料將儲存在 `hive.metastore.warehouse.dir` 屬性指定的位置。依預設，該位置在 HDFS 中。如果另一個叢集需要存取該資料表，除非它對建立資料表的叢集具有足夠的許可，否則存取將會失敗。此外，由於 HDFS 儲存是暫時性的，若叢集終止，資料表資料將會丟失，還必須重新建立資料表。當您使用 Glue 建立 Hive 資料表時，建議您在 Amazon S3 AWS `LOCATION`中指定 。或者，您可以使用 `hive-site` 組態分類在 Amazon S3 中指定 `hive.metastore.warehouse.dir` 的位置，該位置將套用到全部 Hive 資料表。如果在 HDFS 位置建立資料表，且建立資料表的叢集仍在執行中，您可以從 Glue 內將資料表位置更新為 AWS Amazon S3。如需詳細資訊，請參閱《[Glue AWS 開發人員指南》中的在 Glue 主控台上使用資料表](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)。 *AWS *
+ 不支援包含引號和撇號的分割區值，例如，`PARTITION (owner="Doe's").`
+ emr-5.31.0 及更高版本不支援[資料欄統計資料](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics)。
+ 不支援使用 [Hive 授權](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)。或者，您可以考慮使用 [AWS Glue 資源型政策](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。如需詳細資訊，請參閱[使用資源型政策來存取 AWS Glue Data Catalog](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)。

# 使用 S3 Select Pushdown 搭配 Presto 以提升效能
<a name="emr-presto-s3select"></a>

**重要**  
Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。[進一步了解](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

在 Amazon EMR 發行版本 5.18.0 及更高版本中，您可以將 [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) 與 Presto on Amazon EMR 搭配使用。此功能可讓 Presto 將投影操作 (例如 `SELECT`) 和述詞操作 (例如 `WHERE`) 的運算工作「下推」至 Amazon S3。這可讓查詢僅從 Amazon S3 擷取所需的資料，因而提升效能並減少某些應用程式中在 Amazon EMR 和 Amazon S3 之間傳輸的資料量。

## S3 Select Pushdown 是否適合我的應用程式？
<a name="emr-presto-s3select-apps"></a>

建議您使用和不使用 S3 Select Pushdown 對應用程式進行基準分析，確認其是否適用於您的應用程式。

利用下列的準則，來判斷您的應用程式是否可能使用 S3 Select：
+ 您的查詢會篩選掉原始資料集一半以上的資料。
+ 您的查詢篩選條件述詞使用之欄具有 Presto 和 S3 Select 支援的資料類型。S3 Select Pushdown 不支援時間戳記、實際和雙精確度資料類型。針對數值資料，建議使用小數資料類型。如需有關受 S3 Select 支援之資料類型的詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[資料類型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html)。
+ Amazon S3 與 Amazon EMR 叢集之間的網路連線具有良好的傳輸速度和可用頻寬。Amazon S3 不會壓縮 HTTP 回應，因此所壓縮輸入檔案的回應大小可能會增加。

## 考量和限制
<a name="emr-presto-s3select-considerations"></a>
+ 僅支援以 CSV 格式存放的物件。物件可以未壓縮或選擇以 gzip 或 bzip2 壓縮。
+ 不支援 `AllowQuotedRecordDelimiters` 屬性。如果指定此屬性，查詢會失敗。
+ 不支援使用客戶所提供加密金鑰 (SSE-C) 的 Amazon S3 伺服器端加密，也不支援用戶端加密。
+ S3 Select Pushdown 不能取代單欄或壓縮檔案格式，例如 ORC 或 Parquet。
+ Amazon S3 Select 不支援 Presto 和 Trino 的跨區域查詢。

## 啟用 S3 Select Pushdown 搭配 Presto 或 Trino
<a name="emr-presto-s3select-specify"></a>

若要針對 Amazon EMR 上的 PrestoDB 啟用 S3 Select Pushdown，請使用 `presto-connector-hive` 組態分類將 `hive.s3select-pushdown.enabled` 設為 `true`，如以下範例所示。如需詳細資訊，請參閱[設定應用程式](emr-configure-apps.md)。hive.s3select-pushdown.max-connections 值也必須設定。對於大多數應用程式，`500` 的預設設定應當足夠。如需詳細資訊，請參閱下面的[了解和調校 hive.s3select-pushdown.max-connections](#emr-presto-s3select-max)。

對於 PrestoSQL on EMR 版本 6.1.0 - 6.3.0，使用 `prestosql-connector-hive` 取代以下範例中的 `presto-connector-hive`。

Amazon EMR 版本 6.4.0 及更高版本使用新名稱 Trino，而非 PrestoSQL。如果您使用 Trino，請使用 `trino-connector-hive` 取代以下範例中的 `presto-connector-hive`

```
[
    {
        "classification": "presto-connector-hive",
        "properties": {
            "hive.s3select-pushdown.enabled": "true",
            "hive.s3select-pushdown.max-connections": "500"
        }
    }
]
```

### 了解和調校 hive.s3select-pushdown.max-connections
<a name="emr-presto-s3select-max"></a>

根據預設，Presto 使用 EMRFS 做為其檔案系統。`emrfs-site` 組態分類中的設定 `fs.s3.maxConnections` 會指定透過適用於 Presto 之 EMRFS 連線至 Amazon S3 的允許用戶端數量上限。根據預設，此為 500。針對述詞操作存取 Amazon S3 時，S3 Select Pushdown 會略過 EMRFS。在此情況下，`hive.s3select-pushdown.max-connections` 的值會決定允許從工作者節點執行這些操作的用戶端連線數量上限。然而，由 Presto 向 Amazon S3 發出而未下推的請求，例如 GET 操作，仍取決於 `fs.s3.maxConnections` 之值。

如果您的應用程式發生「等待集區連線已逾時」錯誤，請增加 `hive.s3select-pushdown.max-connections` 和 `fs.s3.maxConnections` 的值。

# 新增資料庫連接器
<a name="presto-adding-db-connectors"></a>

在建立叢集時，您可以使用組態分類來設定 JDBC 連接器屬性。組態分類以 `presto-connector` 開頭，例如 `presto-connector-postgresql`。可用的組態分類取決於 Amazon EMR 發行版本。如需最新發行版本的可用組態分類，請參閱 [5.36.2 組態分類](emr-5362-release.md#emr-5362-class) for Amazon EMR 5.36.2。如果您使用不同版本的 Amazon EMR，請參閱 [Amazon EMR 5.x 發行版本](emr-release-5x.md) 以了解組態分類。如需可透過各連接器設定之屬性的詳細資訊，請參閱 [https://prestodb.io/docs/current/connector.html](https://prestodb.io/docs/current/connector.html)。

**Example - 設定具有 PostgreSQL JDBC 連接器的叢集**  
若要啟動已安裝並設定了 PostgreSQL 連接器的叢集，首先請以下列內容建立指定組態分類的 JSON 檔案 (例如 `myConfig.json`) 並將其儲存於本機。  
取代適用於設定的連線屬性，如 Presto 文件中的 [PostgreSQL 連接器](https://prestodb.io/docs/current/connector/postgresql.html)主題所示。  

```
[
  {
    "Classification": "presto-connector-postgresql",
    "Properties": {
      "connection-url": "jdbc:postgresql://example.net:5432/database",
      "connection-user": "MYUSER",
      "connection-password": "MYPASS"
    },
    "Configurations": []
  }
]
```
建立叢集時，請使用以下範例所示之 `--configurations` 選項參考路徑至 JSON 檔案，其中 `myConfig.json` 位於與您執行命令時相同的目錄：  

```
aws emr create-cluster --name PrestoConnector --release-label emr-5.36.2 --instance-type m5.xlarge \
--instance-count 2 --applications Name=Hadoop Name=Hive Name=Pig Name=Presto \
--use-default-roles --ec2-attributes KeyName=myKey \
--log-uri s3://amzn-s3-demo-bucket/logs --enable-debugging \
--configurations file://myConfig.json
```

# 使用 SSL/TLS 並設定 Presto on Amazon EMR 的 LDAPS
<a name="presto-ssl"></a>

藉由 Amazon EMR 發行版本 5.6.0 及更高版本，您可以啟動 SSL/TLS 以協助 Presto 節點之間的[安全內部通訊](https://prestodb.io/docs/current/security/internal-communication.html)。您可以為傳輸中加密設定安全組態，達成這個目的。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[加密選項](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)和[使用安全組態設定叢集安全性](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html)。

搭配傳輸中加密使用安全組態時，Amazon EMR 會為 Presto 執行下列操作：
+ 將您針對傳輸中加密指定的加密成品或憑證，分配到整個 Presto 叢集。如需詳細資訊，請參閱[提供傳輸中資料加密的憑證](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates)。
+ 設定下列屬性，這些屬性會使用對應至 Presto 所使用 `presto-config` 檔案的 `config.properties` 組態分類：
  + 在所有節點上，將 `http-server.http.enabled` 設成 `false`，這樣會停用 HTTP，以便使用 HTTPS。這需要您在設定傳輸中加密的安全組態時，提供適用於公有和私有 DNS 的憑證。其中一種方法是使用支援多個域的 SAN (主體替代名稱) 憑證。
  + 設定 `http-server.https.*` 值。如需有關組態的詳細資訊，請參閱 Presto 文件中的 [LDAP 身分驗證](https://prestodb.io/docs/current/security/ldap.html)。

此外，搭配 Amazon EMR 發行版本 5.10.0 及更高版本時，您可以為使用 HTTPS 連線至 Presto 協調器的用戶端設定 [LDAP 身分驗證](https://prestodb.io/docs/current/security/ldap.html)。這項設定會使用安全 LDAP (LDAPS)。在您的 LDAP 伺服器上，TLS 必須已經啟用，且 Presto 叢集必須使用已經啟用傳輸中資料加密功能的安全組態。需要設定其他組態。這些組態選項將依您所使用的 Amazon EMR 發行版本而有不同。如需詳細資訊，請參閱[使用 LDAP 身分驗證 Presto on Amazon EMR](emr-presto-ldap.md)。

Presto on Amazon EMR 預設會使用連接埠 8446 進行內部 HTTPS。用於內部通訊的連接埠必須與對 Presto 協調器進行用戶端 HTTPS 存取時所使用的連接埠相同。`http-server.https.port` 組態分類內的 `presto-config` 屬性會指定連接埠。

# 使用 LDAP 身分驗證 Presto on Amazon EMR
<a name="emr-presto-ldap"></a>

請遵循本節所述步驟來設定 LDAP。如需詳細資訊，請參閱每個步驟中的範例和連結。

**Topics**
+ [步驟 1：收集關於 LDAP 伺服器的資訊，並將伺服器憑證複製到 Amazon S3](#emr-presto-ldap-server-prereq)
+ [步驟 2：設定安全組態](#emr-presto-ldap-seccfg)
+ [步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON](#emr-presto-ldap-prestoconfig)
+ [步驟 4：建立指令碼，並透過其複製 LDAP 伺服器憑證，以及上傳至 Amazon S3](#emr-presto-ldap-servercert)
+ [步驟 5：建立叢集](#emr-presto-ldap-createcluster)

## 步驟 1：收集關於 LDAP 伺服器的資訊，並將伺服器憑證複製到 Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

在下面一節中，您將需要 LDAP 伺服器的資訊和項目來設定 LDAP 身分驗證。

### LDAP 伺服器的 IP 地址或主機名稱
<a name="w2aac60c39c13b7b5"></a>

Amazon EMR 主節點上的 Presto 協調器，必須能夠連線到該指定的 IP 地址或主機名稱位置的 LDAP 伺服器。根據預設，Presto 會透過連接埠 636，使用 LDAPS 與 LDAP 伺服器進行通訊。如果您的 LDAP 實作需要自訂連接埠，您可以使用 `ldap.url` 屬性搭配 Amazon EMR 5.16.0 或更高版本來指定，或使用 `authentication.ldap.url` 搭配更早版本。將自訂連接埠換成 `636`，如 `presto-config` 中的 [步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON](#emr-presto-ldap-prestoconfig) 組態分類範例中所示。確定任何防火牆和安全群組都允許連接埠 636 (或是您的自訂連接埠) 傳入及傳出流量，而且用於內部叢集通訊的連接埠 8446 (或是您的自訂連接埠) 也允許這些流量。

### LDAP 伺服器憑證
<a name="w2aac60c39c13b7b7"></a>

您必須將憑證檔案上傳至 Amazon S3 內的安全位置。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[我該如何上傳檔案與資料夾至 S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。您要建立一個會在叢集啟動時，由 Amazon S3 發出的這份憑證將會複製到叢集中每個節點的引導操作。在 [步驟 4：建立指令碼，並透過其複製 LDAP 伺服器憑證，以及上傳至 Amazon S3](#emr-presto-ldap-servercert). 憑證範例為 *s3：//amzn-s3-demo-bucket/ldap\$1server.crt*。

### 適用於匿名繫結的 LDAP 伺服器設定
<a name="w2aac60c39c13b7b9"></a>

如果匿名繫結已在 PrestoDB 上停用，則您必須使用具備許可之帳戶的使用者 ID (UID) 和密碼，才能繫結至 LDAP 伺服器，如此 PrestoDB 伺服器才能建立連線。您要使用 `internal-communication.authentication.ldap.user` 組態分類中的 `internal-communication.authentication.ldap.password` 和 `presto-config` 屬性，指定 UID 和密碼。Amazon EMR 5.10.0 不支援這些設定，所以當您使用這個發行版本時，LDAP 伺服器必須支援匿名繫結。

請注意，Trino 不需要匿名繫結組態。

**取得 LDAP 伺服器上匿名繫結的狀態**
+ 從 Linux 用戶端使用 [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) 命令，如以下範例所示：

  ```
  ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress
  ```

  如果不允許使用匿名繫結，該命令將傳回以下內容：

  ```
  ldap_bind: Inappropriate authentication (48)
  additional info: anonymous bind disallowed
  ```

**驗證帳戶具備許可而能操作使用簡單身分驗證的 LDAP 伺服器**
+ 從 Linux 用戶端使用 [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) 命令，如以下範例所示。範例中使用的虛構使用者 *presto*，已經儲存在執行於 EC2 執行個體上的 Open LDAP 伺服器中，而該執行個體的虛構主機名稱為 *ip-xxx-xxx-xxx-xxx.ec2.internal*。這名使用者已與組織單位 (OU) *admins* 關聯，而其密碼為 *123456*：

  ```
  ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal 
  ```

  如果帳戶正確，且持有適當員許可，則命令會傳回如下內容：

  ```
  dn:uid=presto,ou=admins,dc=ec2,dc=internal
  ```

在 [步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON](#emr-presto-ldap-prestoconfig) 中的範例組態已清楚包含此帳戶，但不受支援的 5.10.0 發行版本則未包含此帳戶。如果 LDAP 伺服器會使用匿名繫結，請移除 `internal-communication.authentication.ldap.user` 和 `internal-communication.authentication.ldap.password` 名稱/值對。

### 適用於 Presto 使用者的 LDAP 辨別名稱 (DN)
<a name="w2aac60c39c13b7c11"></a>

當您為 Presto 指定 LDAP 組態時，您指定的繫結模式要由 `${USER}` 加上組織單位 (OU)，以及其他網域元件 (DC) 所組成。進行密碼身分驗證時，Presto 會將 `${USER}` 更換成每位使用者的實際使用者 ID (UID)，以便與這個繫結模式所指定的辨別名稱 (DN) 進行匹配。您需要合格使用者所隸屬的 OU 及其 DC。例如，若要允許 `admins` OU 內使用者能在 `corp.example.com` 網域中驗證 Presto，則您必須指定其使用者繫結模式為 `${USER},ou=admins,dc=corp,dc=example,dc=com`。

**注意**  
使用 時 AWS CloudFormation，您需要使用 Fn：：Sub 函數，以實際的使用者 ID (UID) `${USER}`取代 。如需詳細資訊，請參閱《AWS CloudFormation 使用者指南》**中的 [Fn::Sub 主題](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html)：

使用 Amazon EMR 5.10.0 時，只能指定一個前述模式。使用 Amazon EMR 5.11.0 或更高版本時，您可以指定多個模式，並以冒號 (:) 彼此分隔。嘗試驗證 Presto 的使用者，將與第一個模式進行比較，接著與第二、第三個依序進行比較。如需範例，請參閱 [步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON](#emr-presto-ldap-prestoconfig)。

## 步驟 2：設定安全組態
<a name="emr-presto-ldap-seccfg"></a>

建立已啟用傳輸中加密的安全組態。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[建立安全組態](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html)。在您設定傳輸中加密時所提供的加密成品，將會用來加密 Presto 節點之間的內部通訊。如需詳細資訊，請參閱[提供傳輸中資料加密的憑證](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates)。當用戶端連線至 Presto 伺服器時，將會使用 LDAP 伺服器憑證來進行驗證。

## 步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON
<a name="emr-presto-ldap-prestoconfig"></a>

您要使用 `presto-config` 組態分類來設定 LDAP 的 Presto 屬性。`presto-config` 的格式和內容略有不同，取決於 Amazon EMR 發行版本和 Presto 安裝 (PrestoDB 或 Trino)。本章節稍後會提供有關組態差異的範例。如需詳細資訊，請參閱[設定應用程式](emr-configure-apps.md)。

下列步驟會假設您已將 JSON 資料存為檔案 *MyPrestoConfig.json*。如果您是使用主控台，則該檔案應上傳到 Amazon S3 中的安全位置，以便您在建立叢集時可以進行參考。如果您使用 AWS CLI，則可以在本機參考 檔案。

**Example 使用 PrestoSQL (Trino) 的 Amazon EMR 6.1.0 及更高版本**  
以下範例會使用 [步驟 1：收集關於 LDAP 伺服器的資訊，並將伺服器憑證複製到 Amazon S3](#emr-presto-ldap-server-prereq) 的 LDAP 主機名稱，以驗證要繫結的 LDAP 伺服器。範例中會指定兩個使用者繫結模式，並用於指出在 LDAP 伺服器上的 `admins` OU 和 `datascientists` OU 內的使用者，都是符合資格，能夠驗證 Trino 伺服器的使用者。繫結模式之間將以冒號 (`:`) 分隔。  
Amazon EMR 版本 6.4.0 及更高版本使用新名稱 Trino，而非 PrestoSQL。如果您使用 Trino，請使用 `trino-config` 取代以下組態分類中的 *`prestosql-config`*，並且使用 `trino-password-authenticator` 取代 `prestosql-password-authenticator`。  

```
[
   {
      "Classification":"prestosql-config",
      "Properties":{
         "http-server.authentication.type":"PASSWORD"
      }
   },
   {
      "Classification":"prestosql-password-authenticator",
      "Properties":{
         "password-authenticator.name":"ldap",
         "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
         "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal"
      }
   }
]
```

**Example Amazon EMR 5.16.0 版及更高版本**  
下面範例會使用 [步驟 1：收集關於 LDAP 伺服器的資訊，並將伺服器憑證複製到 Amazon S3](#emr-presto-ldap-server-prereq) 的 LDAP 使用者 ID 和密碼、以及 LDAP 主機名稱，驗證要繫結的 LDAP 伺服器。範例中會指定兩個使用者繫結模式，並用於指出在 LDAP 伺服器上的 `admins` OU 和 `datascientists` OU 內的使用者，都是符合資格，能夠驗證 Presto 伺服器的使用者。繫結模式之間將以冒號 (`:`) 分隔。  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "PASSWORD"
                }
        },
        {
                "Classification": "presto-password-authenticator",
                "Properties": {
                        "password-authenticator.name": "ldap",
                        "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.11.0 到 5.15.0**  
這些發行版本的 `presto-config `組態分類清單格式會有些微差異。下列範例會指定與先前範例相同的參數。  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal",
                        "internal-communication.authentication.ldap.user": "presto",
                        "internal-communication.authentication.ldap.password": "123456"
                }
        }]
```

**Example Amazon EMR 5.10.0**  
Amazon EMR 5.10.0 僅支援匿名繫結，因此這些輸入項目將予以省略。此外，您只能指定一個繫結模式。  

```
[{
        "Classification": "presto-config",
                "Properties": {
                        "http-server.authentication.type": "LDAP",
                        "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636",
                        "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal"
                }
        }]
```

## 步驟 4：建立指令碼，並透過其複製 LDAP 伺服器憑證，以及上傳至 Amazon S3
<a name="emr-presto-ldap-servercert"></a>

建立指令碼，透過其將憑證檔案複製到叢集中的每個節點，並將檔案加入金鑰存放區。使用文字編輯器來建立這個指令碼，接著儲存並上傳至 Amazon S3。在 中[步驟 5：建立叢集](#emr-presto-ldap-createcluster)，指令碼檔案會參考為 *s3：//amzn-s3-demo-bucket/LoadLDAPCert.sh*。

下列範例指令碼會使用預設的金鑰存放區密碼，*changeit*。建議您在建立叢集後連線到主節點，並且使用 keytool 命令來變更金鑰存放區密碼。

```
#!/bin/bash
aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt .
sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt
```



## 步驟 5：建立叢集
<a name="emr-presto-ldap-createcluster"></a>

當建立叢集時，您要指定 Presto 和希望 Amazon EMR 安裝的其他應用程式。下面範例也會參考 JSON 內的組態分類屬性，但是您也可以用內嵌方式指定組態分類。

**使用 Amazon EMR 主控台，建立採用 LDAP 身分驗證的 Presto 叢集**

1. 導覽至新的 Amazon EMR 主控台，然後從側邊導覽選取**切換至舊主控台**。如需有關切換至舊主控台時預期情況的詳細資訊，請參閱[使用舊主控台](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)。

1. 選擇 **Create cluster (建立叢集)**，然後選擇 **Go to advanced options (前往進階選項)**。

1. 選擇 **Presto** 和 Amazon EMR 要安裝的其他應用程式，並在 **軟體組態**下方，選擇要使用的 Amazon EMR **版本**。只有在使用 Amazon EMR 5.10.0 和更高版本時，LDAP 身分驗證才能受到支援。

1. 在**編輯軟體設定**中，選擇**從 S3 載入 JSON**，然後在您於 [步驟 3：為 LDAP 建立使用 Presto 屬性的組態 JSON](#emr-presto-ldap-prestoconfig) 中所建立 JSON 組態檔案的 Amazon S3 中輸入位置，最後選擇**下一步**。

1. 設定叢集硬體和聯網，然後選擇 **Next (下一步)**。

1. 選擇 **Bootstrap Actions (引導操作)**。在 **Add bootstrap action (新增引導操作)** 中，依序選取 **Custom action (自訂動作)**、**Configure and add (設定和新增)**。

1. 輸入引導操作**的名稱**，輸入您在 中建立的**指令碼位置**[步驟 4：建立指令碼，並透過其複製 LDAP 伺服器憑證，以及上傳至 Amazon S3](#emr-presto-ldap-servercert)，例如 **s3：//amzn-s3-demo-bucket/LoadLDAPCert.sh**，然後選擇**新增**。

1. 依序在 **General Options (一般選項)**、**Tags (標記)** 和 **Additional Options (其他選項)** 中，選擇適合您的應用程式的設定，然後選擇 **Next (下一步)**。

1. 選擇 **Authentication and encryption (身分驗證和加密)**，接著選擇您在 ** 中所建立的 **Security configuration (安全組態)[步驟 2：設定安全組態](#emr-presto-ldap-seccfg)。

1. 選擇適用於應用程式的其他安全選項，然後選擇 **Create cluster (建立叢集)**。

**使用 建立具有 LDAP 身分驗證的 Presto 叢集 AWS CLI**
+ 使用 `aws emr create-cluster` 命令。您至少要指定 Presto 應用程式，以及該 Presto 組態分類、引導指令碼，以及您在先前步驟中所建立的安全組態。下面範例會參考存放在與您執行命令的相同目錄中的 JSON 檔案做為組態檔。換句話說，引導指令碼必須儲存至 Amazon S3。以下範例使用 `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`。
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

  ```
  aws emr create-cluster  --applications Name=presto --release-label emr-5.16.0 \
  --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \
  --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \
  --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json
  ```

# 啟動 Presto 嚴格模式
<a name="presto-strict-mode"></a>

在某些情形中，長時間執行的查詢可能導致高成本，使 Amazon EMR 使用更多叢集資源。這會佔用叢集上其他工作負載所需的資源。使用 Amazon EMR 版本 6.8 及更高版本，您可以使用嚴格模式功能拒絕以下類型的長時間執行查詢，或向您發出警告：
+ 分割資料欄上無述詞之查詢，它會導致對大量資料執行資料表掃描
+ 兩個大型資料表之間交叉聯結的查詢
+ 對大量資料列執行排序而無限制的查詢

Presto 對查詢計畫執行完整優化後，嚴格模式將會啟動。若要依據您的查詢需要使用並自訂嚴格模式，您可以透過以下方式設定 Presto。


**嚴格模式的 Presto 組態**  

| 設定 | 描述 | 預設 | 
| --- | --- | --- | 
| strict-mode-enabled | 開啟和關閉嚴格模式。true 值表示嚴格模式已開啟。 | false | 
| strict-mode-fail-query | 若嚴格模式偵測到可能的長時間執行查詢，則會拒絕此類查詢。如果為 false，Amazon EMR 只會發出警告。 | false | 
| strict-mode-restrictions | 指定當嚴格模式開啟時要套用的限制。嚴格模式支援下列限制：MANDATORY\$1PARTITION\$1PREDICATE、DISALLOW\$1CROSS\$1JOIN 和 LIMITED\$1SORT。 |  MANDATORY\$1PARTITION\$1PREDICATE,DISALLOW\$1CROSS\$1JOIN、LIMITED\$1SORT  | 

若要試用嚴格模式，您可以覆寫這些組態，或在使用 Presto 用戶端時將其設為工作階段屬性。

**使用 在叢集建立時設定組態 AWS 管理主控台**

1. 選擇**建立叢集**，然後選取 Amazon EMR 版本 6.8.0、Presto 或 Trino。如需詳細資訊，請參閱[安裝 PrestoDB 和 Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-considerations.html#emr-prestodb-prestosql)。

1. 直接指定嚴格模式的組態屬性，或將 JSON 檔案上傳至 Amazon S3。或者，為您的中繼存放區選取 AWS Glue 資料目錄。指定您的 VPC、子網路、引導操作、金鑰對和安全群組。選擇**建立叢集**，以建立您的叢集。

1. 登入叢集的主節點並執行 `presto-cli` 或 `trino-cli`。

1. 提交您的查詢。嚴格模式會驗證每個查詢，並判斷其是否為長時間執行的查詢。依據您的 `strict-mode-fail-query` 設定，Amazon EMR 會拒絕查詢或發出警告。

1. 查詢結束後，終止叢集並刪除您的資源。

**使用 在執行中的叢集上設定組態 AWS CLI**

1. 使用 登入叢集的主要節點， AWS CLI 然後執行 `presto-cli`或 `trino-cli`。

1. 使用所需值來執行下列命令。

   ```
   set session strict_mode_enabled = true; 
   set session strict_mode_fail_query = false;
   set session strict_mode_restrictions = 'DISALLOW_CROSS_JOIN,LIMITED_SORT';
   ```

## 考量事項
<a name="presto-strict-mode-considerations"></a>

當您使用嚴格模式時，請考慮下列事項：
+ 在某些情形中，嚴格模式可能拒絕未使用大量資源的長時間執行查詢。例如，小型資料表上的查詢不會套用動態篩選條件或以交叉聯結取代內部聯結。這可能會導致查詢使用強制性分割區述詞或禁止交叉聯結。發生這種情況時，嚴格模式會拒絕查詢。
+ 嚴格模式檢查僅適用於 SELECT、INSERT、CREATE TABLE AS SELECT 和 EXPLAIN ANALYZE 查詢類型。
+ 您只能在使用 Hive 連接器時對強制性分割區述詞套用限制。

# 在 Presto 中處理 Spot 執行個體遺失
<a name="presto-spot-loss"></a>

借助 Amazon EMR 中的 Spot 執行個體，您可以在備用 Amazon EC2 容量上以較低成本執行大數據工作負載。成本降低的代價是，Amazon EC2 可能顯示兩分鐘通知而中斷 Spot 執行個體。當您終止節點時，Presto 可能需要長達 10 分鐘，然後才會傳回錯誤。這會導致錯誤報告和可能重試的不必要延遲。快速終止是一項功能，可讓您控制 Presto 處理已終止節點的方式。

Presto 協調器的作業是，透過定期進行輪詢的狀態，追蹤所有作業節點。如果沒有快速終止，協調器不會向 YARN NodeManager 查詢每個節點的狀態。這可能會導致在查詢失敗前進入長時間重試迴圈。透過快速終止，Presto 協調器會在輪詢無法到達主機時查詢 NodeManager 中的節點狀態。如果 NodeManager 顯示節點處於非作用中，Presto 會放棄進一步重試，使查詢失敗並傳回 `NODE_DECOMMISSIONED` 錯誤。

以下一組組態參數可讓您在節點終止時，控制並自訂 Presto 的行為。


**用於處理節點失敗的 Presto 組態**  

| 設定 | 描述 | 預設 | 
| --- | --- | --- | 
| query.remote-task.max-backoff-duration | 協調器繼續嘗試從工作節點擷取遠端任務狀態的持續時間。 | 10 分鐘 | 
| query.remote-task.quick-terminate-node-failure |  如果協調器無法到達節點，或無法連線到在該節點上執行的工作者，則啟動快速節點故障。`query.remote-task.terminate-on-connect-exception` 的值決定了協調器是否必須到達節點或連線至工作者。 節點查詢失敗，Amazon EMR 會從可用工作者清單中移除該節點。當這種情況發生時，您無法使用該節點來排定新的查詢。 當您將此值設定為 `false` 時，Presto 會還原為先前的行為，其中 Presto 協調器會在將節點標記為不可用前再次嘗試連接節點 (針對 `query.remote-task.max-backoff-duration`)，並且使該節點上的持續查詢失敗。  | true | 
| query.remote-task.terminate-on-connect-exception | 指定當主機可連接，但協調器無法連線到該主機的工作者處理序時，Amazon EMR 是否應該移除節點。這個值設為 true 時，如果無法連線到主機，您將啟動快速查詢失敗。 | false | 

# 使用 Presto 自動擴展搭配逐漸除役
<a name="presto-graceful-autoscale"></a>

Amazon EMR 發行版本 5.30.0 及更高版本包含一項功能，您可以用它設定特定擴展動作的寬限期間。寬限期間允許 Presto 任務在因縮減規模動作或自動擴展政策請求而導致節點終止之前繼續執行。如需有關擴展規則的詳細資訊，請參閱《Amazon EMR 管理指南》**中的[了解自動擴展規則](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html#emr-scaling-rules)。搭配使用 Presto 自動擴展與逐漸除役，可防止在除役的節點上排程新任務，同時可讓執行中任務在達到關機逾時之前完成。正在執行的查詢將在節點解除委任之前完成執行。執行個體機群不支援自動擴展。

您可以控制在收到自動擴展關機請求以後，允許 Presto 任務完成的時間。預設情況下，Amazon EMR 的關機逾時為 `0` 分鐘，這意味著按縮減請求的要求，Amazon EMR 會立即終止節點和在其上執行的任何 Presto 任務。若要為 Amazon EMR 上的 Presto 任務設定較長超時，允許「執行中」查詢完成後才向下擴展叢集，請使用 `presto-config` 組態分類，將 `graceful-shutdown-timeout` 參數設為單位為秒或分鐘、且大於零的值。如需詳細資訊，請參閱[設定應用程式](emr-configure-apps.md)。

例如，增加 `graceful-shutdown-timeout` 值至 `"30m"` 可指定逾時期間為 30 分鐘。關機逾時期間結束後，如果標記為要除役的節點仍在等待查詢工作完成，則此時查詢若是失敗，系統會強制終止此節點。如果查詢任務在五分鐘內完成，此時只要其他 YARN 應用程式已完成執行，系統就會終止標記為除役的節點。

**Example 範例：搭配逐漸除役使用的 Presto 自動擴展組態**  
將 `graceful-shutdown-timeout` 值取代為適合您安裝程式的分鐘數。沒有最大數值。下面範例將逾時值設定為 `1800` 秒 (30 分鐘)。  

```
[
    {
        "classification": "presto-config",
        "properties": {
            "graceful-shutdown-timeout": "1800s"
        }
    }
]
```

**限制**

PrestoDB 逐漸除役不適用於停用 HTTP 連線的 EMR 叢集，例如當 `http-server.http.enabled` 設為 `false` 時。不管 `http-server.http.enabled` 設定為何，Trino 始終不支援逐漸除役。

# 使用 Presto on Amazon EMR 的考量
<a name="emr-presto-considerations"></a>

當您執行 [Presto](https://aws.amazon.com/big-data/what-is-presto/) on Amazon EMR 時，請考慮以下限制。

## Presto 命令列可執行檔
<a name="emr-presto-command-line-cli"></a>

在 Amazon EMR 中，PrestoDB 和 Trino 都使用相同的命令列可執行檔 `presto-cli`，如以下範例所示。

```
presto-cli --catalog hive
```

## 不可設定的 Presto 部署屬性
<a name="emr-presto-deployment-config"></a>

您使用的 Amazon EMR 版本決定了可用的 Presto 部署組態。如需有關這些組態屬性的詳細資訊，請參閱 Presto 文件中的[部署 Presto](https://prestodb.io/docs/current/installation/deployment.html)。下表顯示 Presto `properties` 檔案的不同組態選項。


| 檔案 | 可設定 | 
| --- | --- | 
|  `log.properties`  |  PrestoDB：在 Amazon EMR 版本 4.0.0 及更高版本中可設定。使用 `presto-log` 組態分類。  | 
|  `config.properties`  |  PrestoDB：在 Amazon EMR 版本 4.0.0 及更高版本中可設定。使用 `presto-config` 組態分類。  | 
|  `hive.properties`  |  PrestoDB：在 Amazon EMR 版本 4.1.0 及更高版本中可設定。使用 `presto-connector-hive` 組態分類。  | 
|  `node.properties`  |  PrestoDB：在 Amazon EMR 版本 5.6.0 及更高版本中可設定。使用 `presto-node` 組態分類。  | 
|  `jvm.config`  |  不可設定。  | 

## PrestoDB 安裝
<a name="emr-prestodb-prestosql"></a>

應用程式名稱 *Presto* 繼續被用來在叢集上安裝 PrestoDB。

您可以安裝 PrestoDB 或 Trino，但您不能在單個叢集上同時安裝兩者。如果在嘗試建立叢集時同時指定 PrestoDB 和 Trino，會發生驗證錯誤而且叢集建立請求將會失敗。

## EMRFS 和 PrestoS3FileSystem 組態
<a name="emr-presto-prestos3"></a>

在 Amazon EMR 版本 5.12.0 及更高版本中，PrestoDB 可以使用 EMRFS。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的 [EMR 檔案系統 (EMRFS)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs)。對於早期版本的 Amazon EMR，PrestoS3FileSystem 是唯一的組態選項。

您可以使用安全組態來設定 Amazon S3 中的 EMRFS 資料加密。您也可以向 Amazon S3 請求使用 EMRFS 的 IAM 角色。如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[了解加密選項](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)和[設定向 Amazon S3 請求使用 EMRFS 的 IAM 角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html)。

**注意**  
如果您使用 Amazon EMR 版本 5.12.0 查詢 Amazon S3 中的基礎資料，則可能發生 Presto 錯誤。這是因為 Presto 無法從 `emrfs-site.xml` 中取用組態分類值。解決辦法是，在 `usr/lib/presto/plugin/hive-hadoop2/` 下方建立 `emrfs` 子目錄，並在 `usr/lib/presto/plugin/hive-hadoop2/emrfs` 中建立 symlink 以連線至現有 `/usr/share/aws/emr/emrfs/conf/emrfs-site.xml` 檔案。然後重新啟動 presto-server 程序 (`sudo presto-server stop` 在 `sudo presto-server start` 之前)。

您可以覆寫 EMRFS 預設值並改用 PrestoS3FileSystem。若要這樣做，請使用 `presto-connector-hive` 組態分類將 `hive.s3-file-system-type` 設定為 `PRESTO`，如以下範例所示。如需詳細資訊，請參閱[設定應用程式](emr-configure-apps.md)。

```
[
   {
      "Classification": "presto-connector-hive",
      "Properties": {
         "hive.s3-file-system-type": "PRESTO"
      }
   }
]
```

如果您使用 PrestoS3FileSystem，請使用 `presto-connector-hive` 組態分類來設定 PrestoS3FileSystem 屬性。如需有關可用屬性的詳細資訊，請參閱 Presto 文件中「Hive 連接器」一節的 [Amazon S3 組態](https://prestodb.io/docs/current/connector/hive.html#amazon-s3-configuration)。這些設定不適用於 EMRFS。

## 最終使用者模擬的預設設定
<a name="emr-presto-end-user-impersonation"></a>

依預設，在 Amazon EMR 版本 5.12.0 和更高版本中可透過最終使用者模擬存取 HDFS。如需詳細資訊，請參閱 Presto 文件中的[最終使用者模擬](https://prestodb.io/docs/current/connector/hive-security.html#end-user-impersonation)。若要使用 `presto-config` 組態分類變更此設定，請將 `hive.hdfs.impersonation.enabled` 屬性設為 `false`。

## Presto Web 界面的預設連接埠
<a name="emr-presto-default-web-port"></a>

依預設，Amazon EMR 會在 Presto 協調器上將 Presto Web 界面設定為使用連接埠 8889 (針對 PrestoDB 和 Trino).。若要變更連接埠，則使用 `presto-config` 組態分類來設定 `http-server.http.port` 屬性。如需詳細資訊，請參閱 Presto 文件中*部署 Presto* 一節的[設定屬性](https://prestodb.io/docs/current/installation/deployment.html#config-properties)。

## 某些版本中 Hive 儲存貯體執行的問題
<a name="emr-presto-bucket-execution"></a>

Presto 152.3 版有 Hive 儲存貯體執行的問題，此問題會在某些情況下，造成 Presto 查詢效能大幅降低。Amazon EMR 版本 5.0.3、5.1.0 和 5.2.0 包含此版本 Presto。為解決此問題，請使用 `presto-connector-hive` 組態分類將 `hive.bucket-execution` 屬性設定為 `false`，如以下範例所示。

```
[
   {
      "Classification": "presto-connector-hive",
      "Properties": {
         "hive.bucket-execution": "false"
      }
   }
]
```

# Presto 版本歷史記錄
<a name="Presto-release-history"></a>

下表列出 Amazon EMR 的每個發行版本中包含的 Presto 版本，以及與應用程式一起搭配安裝的元件。如需每個發行版本中的元件版本，請參閱 [Amazon EMR 7.x 發行版本](emr-release-7x.md)、[Amazon EMR 6.x 發行版本](emr-release-6x.md) 或 [Amazon EMR 5.x 發行版本](emr-release-5x.md) 中適用於您發行版本的「元件版本」一節。


**Presto 版本資訊**  

| Amazon EMR 發行標籤 | Presto 版本 | 與 Presto 一起搭配安裝的元件 | 
| --- | --- | --- | 
| emr-7.12.0 | 0.287-amzn-6 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.11.0 | 0.287-amzn-5 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.10.0 | 0.287-amzn-4 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.9.0 | 0.287-amzn-3 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.8.0 | 0.287-amzn-2 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.7.0 | 0.287-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.6.0 | 0.287-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.5.0 | 0.287-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.4.0 | 0.287-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.3.0 | 0.285-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.2.0 | 0.285-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.36.2 | 0.267-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.1.0 | 0.284-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-7.0.0 | 0.283-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.15.0 | 0.283-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.14.0 | 0.281-amzn-2 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.13.0 | 0.281-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.12.0 | 0.281-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.11.1 | 0.279-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.11.0 | 0.279-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.10.1 | 0.278.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.10.0 | 0.278.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.9.1 | 0.276-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.9.0 | 0.276-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.8.1 | 0.273.3-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.8.0 | 0.273.3-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.7.0 | 0.272-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.36.1 | 0.267-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.36.0 | 0.267-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.6.0 | 0.267-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.35.0 | 0.266-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.5.0 | 0.261-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.4.0 | 0.254.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.3.1 | 0.245.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.3.0 | 0.245.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.2.1 | 0.238.3-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.2.0 | 0.238.3-amzn-1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.1.1 | 0.232 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.1.0 | 0.232 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.0.1 | 0.230 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-6.0.0 | 0.230 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.34.0 | 0.261-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.33.1 | 0.245.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.33.0 | 0.245.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.32.1 | 0.240.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.32.0 | 0.240.1-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.31.1 | 0.238.3-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.31.0 | 0.238.3-amzn-0 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.30.2 | 0.232 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.30.1 | 0.232 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.30.0 | 0.232 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mariadb-server, presto-coordinator, presto-worker | 
| emr-5.29.0 | 0.227 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.28.1 | 0.227 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.28.0 | 0.227 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hudi, hudi-presto, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.27.1 | 0.224 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.27.0 | 0.224 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.26.0 | 0.220 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.25.0 | 0.220 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.24.1 | 0.219 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.24.0 | 0.219 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.23.1 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.23.0 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.22.0 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.21.2 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.21.1 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.21.0 | 0.215 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.20.1 | 0.214 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.20.0 | 0.214 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.19.1 | 0.212 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.19.0 | 0.212 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.18.1 | 0.210 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.18.0 | 0.210 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.17.2 | 0.206 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.17.1 | 0.206 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.17.0 | 0.206 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.16.1 | 0.203 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.16.0 | 0.203 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.15.1 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.15.0 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.14.2 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.14.1 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.14.0 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.13.1 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.13.0 | 0.194 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.12.3 | 0.188 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.12.2 | 0.188 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.12.1 | 0.188 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.12.0 | 0.188 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.11.4 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.11.3 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.11.2 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.11.1 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.11.0 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.10.1 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.10.0 | 0.187 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.9.1 | 0.184 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.9.0 | 0.184 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.8.3 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.8.2 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.8.1 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.8.0 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.7.1 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.7.0 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.6.1 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.6.0 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.5.4 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.5.3 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.5.2 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.5.1 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.5.0 | 0.170 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.4.1 | 0.166 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.4.0 | 0.166 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.3.2 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.3.1 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.3.0 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.2.3 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.2.2 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.2.1 | 0.157.1 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.2.0 | 0.152.3 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.1.1 | 0.152.3 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.1.0 | 0.152.3 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.0.3 | 0.152.3 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.0.2 | 0.150 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.0.1 | 0.150 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 
| emr-5.0.0 | 0.150 | emrfs, emr-goodies, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hive-client, hcatalog-server, mysql-server, presto-coordinator, presto-worker | 