

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

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

**重要**  
Trino 的早期版本 Presto 仍然可以与 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/)。Amazon EMR 发行版 5.0.0 及更高版本包含 Presto。早期发行版包含 Presto，将其用作沙盒应用程序。有关更多信息，请参阅 [Amazon EMR 4.x 发行版](emr-release-4x.md)。Amazon EMR 发行版 6.1.0 及更高版本支持 Presto 之外的 [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)。


**emr-6.15.0 的 Presto 版本信息**  

| 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**
+ [将 Presto 与 Glue 数据 AWS 目录配合使用](emr-presto-glue.md)
+ [使用 S3 Select Pushdown 搭配 Presto 提高性能](emr-presto-s3select.md)
+ [添加数据库连接器](presto-adding-db-connectors.md)
+ [在亚马逊 EMR 上使用 Presto SSL/TLS 和配置 LDAPS](presto-ssl.md)
+ [激活 Presto 严格模式](presto-strict-mode.md)
+ [在 Presto 中处理竞价型实例丢失](presto-spot-loss.md)
+ [使用采用 Graceful Decommission 的 Presto 自动扩展配置](presto-graceful-autoscale.md)
+ [Presto on Amazon EMR 注意事项](emr-presto-considerations.md)
+ [Presto 发行历史记录](Presto-release-history.md)

# 将 Presto 与 Glue 数据 AWS 目录配合使用
<a name="emr-presto-glue"></a>

使用亚马逊 EMR 发行版 5.10.0 及更高版本，您可以将 Glue 数据目录指定为 Prest AWS o 的默认 Hive 元数据库。当您需要持久性的元数据存储或由不同集群、服务、应用程序和 AWS 账户共享的元数据存储时，我们建议使用此配置。

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务，它使对数据进行分类、清理、丰富数据并在各种数据存储之间可靠地移动数据变得简单且经济高效。 AWS Glue 数据目录提供了一个跨各种数据源和数据格式的统一元数据存储库，与亚马逊 EMR 以及亚马逊 RDS、Amazon Redshift、Redshift Spectrum、Athena 以及任何与 Apache Hive 元数据仓兼容的应用程序集成。 AWS Glue 爬网程序可以自动从 Amazon S3 中的源数据推断出架构，并将相关的元数据存储在数据目录中。有关数据目录的更多信息，请参阅 [AWS Glue *开发者指南中的填充 G AWS l* ue 数据目录](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html)。

Glue 需单独收 AWS 费。在数据目录中存储和访问元数据有月费率，Gl AWS ue ETL 作业和爬虫运行时按小时费率收费，每个预配置的开发端点按每分钟计费。数据目录让您最多可免费存储一百万个对象。如果您存储一百万个以上的对象，将需要为超过一百万的每 100,000 个对象支付 1 美元。数据目录中的对象为表、分区或数据库。有关更多信息，请参阅 [Glue 定价](https://aws.amazon.com/glue/pricing)。

**重要**  
如果您在 2017 年 8 月 14 日之前使用 Amazon Athena 或 Amazon Redshift Spectrum 创建了表，则数据库和表将存储在雅典娜管理的目录中，该目录与 Glue 数据目录是分开的。 AWS 要将 Amazon EMR 与这些表集成，您必须升级到 Glue 数据 AWS 目录。有关更多信息，请参阅*亚马逊 Athena AWS 用户指南中的升级到 Glue* [数据目录](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html)。

## 将 AWS Glue 数据目录指定为元数据库
<a name="emr-presto-glue-configure"></a>

您可以使用 AWS 管理控制台、 AWS CLI或 Amazon EMR API 将 AWS Glue 数据目录指定为元数据库。在使用 CLI 或 API 创建集群时，您可以使用 Presto 配置分类指定数据目录。此外，在 Amazon EMR 5.16.0 及更高版本中，您可以使用配置分类在不同的目录中指定数据目录。 AWS 账户在使用控制台时，您可以使用 **Advanced Options (高级选项)** 或 **Quick Options (快速选项)** 指定数据目录。

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

**使用新主机 AWS 将 Glue 数据目录指定为 Hive 元数据仓库**

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择 **Create cluster**（创建集群）。

1. 在 **Application bundle**（应用程序包）下，选择 **Presto**。

1. 在**AWS Glue Data Catalog 设置**下，选择**用于 Presto 表元数据**复选框。

1. 选择适用于集群的任何其他选项。

1. 要启动集群，选择 **Create cluster**（创建集群）。

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

**要将 Glue AWS 数据目录指定为默认 Hive 元数据仓库，请使用 AWS CLI**

有关如何在创建集群时指定以下配置分类的示例，请参阅[配置应用程序](emr-configure-apps.md)。

**Amazon EMR 5.16.0 及更高版本**
+ 将 `hive.metastore` 属性设置为 `glue`，如以下 JSON 示例所示。

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

  要在不同的数据目录中指定数据目录 AWS 账户，请添加`hive.metastore.glue.catalogid`属性，如以下 JSON 示例所示。将 `acct-id` 替换为数据目录的 AWS 账户。Amazon EMR 版本 5.15.0 及更早版本不支持使用其他 AWS 账户 中的数据目录。

  ```
  [
    {
      "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"
      }
    }
  ]
  ```

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

  从 EMR 版本 6.1.0 起，PrestoSQL 还支持 Glue 作为默认配置 Hive 元存储。为此，请使用 `prestosql-connector-hive` 配置分类将 `hive.metastore` 属性设置为 `glue`，如以下 JSON 示例所示。

  Amazon EMR 6.4.0 及更高版本使用新名称 Trino 而不是 PrestoSQL。如果您使用 Trino，请在以下配置分类中将 `prestosql-connector-hive` 替换为 `trino-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 实例配置文件必须具有 AWS Glue 操作的 IAM 权限。此外，如果您为 AWS Glue Data Catalog 对象启用加密，则还必须允许该角色加密、解密和生成 AWS KMS key 用于加密的对象。

### AWS Glue 操作的权限
<a name="emr-hive-glue-permissions-actions"></a>

如果使用适用于 Amazon EMR 默认的 EC2 实例配置文件，则无需执行任何操作。附加到的`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 数据目录的权限
<a name="emr-hive-glue-permissions-encrypt"></a>

您的实例配置文件需要使用密钥加密和解密数据的权限。如果以下语句适用，您*不必*配置这些权限：
+ 您可以使用 Glue 的 AWS 托管密钥为 Glue 数据目录对象启用加密。 AWS 
+ 您使用的集群与 Gl AWS ue 数据目录 AWS 账户 相同。

否则，您必须将以下语句添加到附加到 EC2 实例配置文件的权限策略。

有关 AWS Glue 数据目录加密的更多信息，请参阅 Glu [e *开发者指南中的AWS 加密*数据目录](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)。

### 基于资源的权限
<a name="emr-hive-glue-permissions-resource"></a>

如果您在 Amazon EMR 中将 AWS Glue 与 Hive、Spark 或 Presto 结合使用， AWS Glue 支持基于资源的策略来控制对数据目录资源的访问。这些资源包括数据库、表、连接和用户定义的函数。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的 [AWS Glue 资源策略](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。

使用基于资源的策略限制从 Amazon EMR 中访问 AWS Glue 时，您在权限策略中指定的委托人必须是与创建集群时指定的 EC2 实例配置文件关联的角色 ARN。例如，对于附加到目录的基于资源的策略，您可以使用以下示例所示的格式为集群 EC2 实例*EMR\$1EC2\$1DefaultRole*的默认服务角色指定角色 ARN，如下所示：`Principal`

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

*acct-id*可以与 Glue 账 AWS 号 ID 不同。这允许从不同账户中的 EMR 集群进行访问。您可以指定多个委托人，且每个委托人都可以来自不同的账户。

## 使用 AWS Glue 数据目录时的注意事项
<a name="emr-presto-glue-knownissues"></a>

在 Presto 中使用 AWS Glue 数据目录作为元数据仓时，请考虑以下事项：
+ 不支持在 AWS Glue 中重命名表。
+ 当您创建 Hive 表而不指定 `LOCATION` 时，表数据存储在通过 `hive.metastore.warehouse.dir` 属性指定的位置。默认情况下，这是 HDFS 中的一个位置。如果另一个集群需要访问该表，则它将失败，除非它有足够的权限访问创建该表的集群。此外，由于 HDFS 存储是暂时性的，因此如果集群终止，表数据将丢失，并且必须重新创建该表。我们建议您在使用 AWS Glue 创建 Hive 表时`LOCATION`在 Amazon S3 中指定。此外，也可以使用 `hive-site` 配置分类来为 `hive.metastore.warehouse.dir` 指定 Amazon S3 中的位置，它适用于所有 Hive 表。如果在 HDFS 位置创建了表，并且创建该表的集群仍在运行，则可以从 Glue 中将该表的位置更新为 Amazon S3 AWS 。有关更多信息，请参阅[《Glue *开发者指南》中的 “在 AWS Glue 控制台AWS 上*使用表格](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html)”。
+ 不支持包含引号和撇号的分区值，例如 `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)。有关更多信息，请参阅[使用基于资源的策略获得 Amazon EMR 访问 Glue AWS 数据目录。](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/) Pushdown 与 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` 属性。如果指定该属性，则查询将失败。
+ 使用客户提供的加密密钥进行的 Amazon S3 服务器端加密（SSE-C）与客户端加密都不受支持。
+ S3 Select Pushdown 不能替代使用列式或压缩文件格式（如 ORC 或 Parquet）。
+ Amazon S3 Select 不支持 Presto 和 Trino 的跨区域查询。

## 启用 S3 Select Pushdown with PrestoDB 或 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)。

对于 EMR 版本 6.1.0 - 6.3.0 或更高版本上的 PrestoSQL，只需将以下示例中的 `presto-connector-hive` 替换为 `prestosql-connector-hive`。

Amazon EMR 6.4.0 及更高版本使用新名称 Trino 而不是 PrestoSQL。如果您使用 Trino，请在以下示例中将 `presto-connector-hive` 替换为 `trino-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。S3 Select Pushdown 在访问 Amazon S3 执行谓词操作时绕过 EMRFS。在此示例中，`hive.s3select-pushdown.max-connections` 的值确定从 Worker 节点执行这些操作所允许的最大客户端连接数。但是，Presto 启动的任何未向下推送的发往 Amazon S3 的请求（例如 GET 操作）将继续由 `fs.s3.maxConnections` 的值控制。

如果您的应用程序遇到错误“Timeout waiting for connection from pool”，请增加 `hive.s3select-pushdown.max-connections` 和 `fs.s3.maxConnections` 的值。

# 添加数据库连接器
<a name="presto-adding-db-connectors"></a>

在创建集群时，可以使用配置分类来配置 JDBC 连接器属性。配置分类以 `presto-connector` 开头，例如 `presto-connector-postgresql`。可用的配置分类取决于 Amazon EMR 发行版。有关适用于最新版本的配置分类，请参阅 Amazon EMR 5.36.2 的 [5.36.2 配置分类](emr-5362-release.md#emr-5362-class)。如果您使用的是 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
```

# 在亚马逊 EMR 上使用 Presto SSL/TLS 和配置 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-config` 配置分类设置以下属性，该分类对应于 Presto 的 `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 发行版而有所不同。有关更多信息，请参阅[为 Presto on Amazon EMR 使用 LDAP 身份验证](emr-presto-ldap.md)。

默认情况下，Presto on Amazon EMR 使用端口 8446 进行内部 HTTPS 通信。用于内部通信的端口必须与用于通过客户端 HTTPS 访问 Presto 协调器的端口相同。`http-server.https.port` 配置分类中的 `presto-config` 属性指定该端口。

# 为 Presto on Amazon EMR 使用 LDAP 身份验证
<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 使用 LDAPS 通过端口 636 与 LDAP 服务器通信。如果您的 LDAP 实施需要使用自定义端口，您可以使用 `ldap.url` 属性（Amazon EMR 5.16.0 或更高版本）或者 `authentication.ldap.url`（早期版本）指定该端口。将自定义端口替换为 `636`，如 [步骤 3：使用 LDAP 的 Presto 属性创建配置 JSON](#emr-presto-ldap-prestoconfig) 中的 `presto-config` 配置分类示例所示。确保任何防火墙和安全组允许端口 636（或自定义端口）以及端口 8446（或自定义端口）上的入站和出站流量，端口 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 禁用了匿名绑定，您需要使用有权限绑定到 LDAP 服务器的账户的用户 ID（UID）和密码，以便 Presto 服务器建立连接。您可以使用 `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` name/value 对。

### Presto 用户的 LDAP 可分辨名称 (DN)
<a name="w2aac60c39c13b7c11"></a>

当您为 Presto 指定 LDAP 配置时，您可以指定一种绑定模式，该模式包括组织单位 (OU) 和其他域组件 (DCs)。`${USER}`在密码身份验证期间，Presto 将 `${USER}` 替换为每个用户的实际用户 ID（UID），以便与该绑定模式指定的可分辨名称（DN）相匹配。您需要符合条件 OUs 的用户所属的以及他们 DCs的。例如，要允许 `admins` 域上的 `corp.example.com` OU 中的用户在 Presto 中进行身份验证，您可以将 `${USER},ou=admins,dc=corp,dc=example,dc=com` 指定为用户绑定模式。

**注意**  
使用时 AWS CloudFormation，需要使用 Fn:: Sub 函数才能替换为实际`${USER}`的用户 ID (UID)。有关更多信息，请参阅*《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)。LDAP 服务器证书用于对到 Presto 服务器的客户端连接进行身份验证。

## 步骤 3：使用 LDAP 的 Presto 属性创建配置 JSON
<a name="emr-presto-ldap-prestoconfig"></a>

您可以使用 `presto-config` 配置分类为 LDAP 设置 Presto 属性。根据 Amazon EMR 发行版和安装的 Presto（PrestoDB 或 Trino）的不同，`presto-config` 的格式和内容稍有不同。在本节后面提供了配置差异示例。有关更多信息，请参阅 [配置应用程序](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，请在以下配置分类中将 *`prestosql-config`* 替换为 `trino-config`、`prestosql-password-authenticator` 和 `trino-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 新控制台，然后从侧面导航栏中选择**切换到旧控制台**。有关切换到旧控制台后预期情况的更多信息，请参阅 [Using the old console](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 安装的其他应用程序，然后在 **Software Configuration (软件配置)** 下面选择要使用的 Amazon EMR **发行版**。仅 Amazon EMR 5.10.0 和更高版本支持 LDAP 身份验证。

1. 在 **Edit software settings (编辑软件设置)** 下面，选择 **Load JSON from S3 (从 S3 加载 JSON)**，输入在[步骤 3：使用 LDAP 的 Presto 属性创建配置 JSON](#emr-presto-ldap-prestoconfig)中创建的 JSON 配置文件的 Amazon S3 位置，然后选择 **Next (下一步)**。

1. 配置集群硬件和网络，然后选择**下一步**。

1. 选择 **Bootstrap Actions (引导操作)**。对于**添加引导操作**，请选择**自定义操作**，然后选择**配置并添加**。

1. **输入引导操作的**名称**，输入您在中创建的**脚本位置**[步骤 4：创建脚本以复制 LDAP 服务器证书并将其上传到 Amazon S3](#emr-presto-ldap-servercert)，例如 **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**，然后选择添加。**

1. 在**常规选项**、**标签**和**其他选项**下面，选择适合您的应用程序的设置，然后选择**下一步**。

1. 选择**身份验证和加密**，然后选择您在**中创建的**安全配置[步骤 2：设置安全配置](#emr-presto-ldap-seccfg)。

1. 选择适合您的应用程序的其他安全选项，然后选择**创建集群**。

**要创建采用 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. 选择 **Create cluster**（创建集群）并选择 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、子网、引导操作、密钥对和安全组。选择 **Create cluster**（创建集群）以创建集群。

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 中处理竞价型实例丢失
<a name="presto-spot-loss"></a>

在 Amazon EMR 中使用竞价型实例时，您可以通过较低的成本利用 Amazon EC2 容量运行大数据工作负载。为换取更低的成本，Amazon EC2 可能会在发出两分钟通知后中断竞价型实例。当您终止某个节点时，Presto 最长可能需要 10 分钟才会返回错误。这会导致错误报告出现不必要的延迟，并可能导致重试。快速终止功能可让您控制 Presto 处理已终止节点的方式。

Presto 协调器的作用是通过定期轮询其状态来跟踪所有 Worker 节点。如果不快速终止，协调器就不会向 YARN NodeManager 查询每个节点的状态。这可能导致在查询失败之前出现长时间的重试循环。通过快速终止， NodeManager 只要轮询未能到达主机，Presto 协调器就会立即在中查看节点状态。如果 NodeManager 显示该节点处于非活动状态，Presto 将放弃进一步的重试，查询失败并返回错误。`NODE_DECOMMISSIONED`

下面的一组配置参数允许您控制和自定义 Presto 在节点终止时的行为。


**Presto 的节点故障处理配置**  

| 设置 | 说明 | 默认 | 
| --- | --- | --- | 
| query.remote-task.max-backoff-duration | 协调器会继续尝试从 Worker 节点获取远程任务状态的持续时间。 | 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 | 

# 使用采用 Graceful Decommission 的 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)。采用 Graceful Decommission 的 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 分钟的超时时段。在关闭超时期结束后，如果标记为停用的节点正在等待查询任务完成，则系统将强制终止该节点，查询失败。如果查询任务在 5 分钟内完成，则系统将在到达 5 分钟时终止标记为停用的节点，前提是其他 YARN 应用程序已完成执行。

**Example 采用 Graceful Decommission 的 Presto 自动扩展配置示例**  
将 `graceful-shutdown-timeout` 值替换为适合您的设置的分钟数。没有最大值。下面的示例将超时值设置为 `1800` 秒（30 分钟）。  

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

**限制**

PrestoDB Graceful Decommission 不适用于禁用 HTTP 连接的 EMR 集群，例如 `http-server.http.enabled` 设置为 `false` 时。Trino完全不支持 Graceful Decommission，不论 `http-server.http.enabled` 设置如何。

# 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 和 PrestoS3 配置 FileSystem
<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 中，PrestoS3 FileSystem 是唯一的配置选项。

您可以使用安全配置为 Amazon S3 中的 EMRFS 数据设置加密。您还可以使用 IAM 角色处理 EMRFS 对 Amazon S3 的请求。有关更多信息，请参阅《Amazon EMR 管理指南》**中的[了解加密选项](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html)和[为处理 EMRFS 对 Amazon S3 的请求配置 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` 中创建一个指向现有 `/usr/share/aws/emr/emrfs/conf/emrfs-site.xml` 文件的符号链接。然后重新启动 presto-server 进程（首先执行 `sudo presto-server stop`，然后执行 `sudo presto-server start`）。

你可以覆盖 EMRFS 的默认值，改用 Pre FileSystem stoS3。为此，请使用 `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`配置分类来配置 Pre FileSystem stoS3 属性。有关可用属性的更多信息，请参阅 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 | 