

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

**importante**  
Presto, la versión anterior de Trino, todavía está disponible para su uso con Amazon EMR. Sin embargo, recomendamos encarecidamente utilizar Trino en el futuro con Amazon EMR. Tenga en cuenta también que Trino y Presto no se pueden ejecutar simultáneamente en el mismo clúster. Para obtener más información, consulte [Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-trino.html).

[Presto](https://aws.amazon.com/big-data/what-is-presto/) es un motor de consultas SQL rápido diseñado para realizar consultas de análisis interactivos en grandes conjuntos de datos de diferentes orígenes. Para obtener más información, consulte el [sitio web de Presto](https://prestodb.io/). Presto se incluye en la versión 5.0.0 de Amazon EMR y posteriores. Las versiones anteriores incluyen Presto como una aplicación de entorno aislado. Para obtener más información, consulte [Versiones de lanzamiento de Amazon EMR 4.x](emr-release-4x.md). Las versiones 6.1.0 y posteriores de Amazon EMR admiten [Trino](https://trino.io/) además de Presto. Para obtener más información, consulte [Instalación de PrestoDB](emr-presto-considerations.md#emr-prestodb-prestosql).

En la siguiente tabla, se muestra la versión de Presto incluida en la última versión de la serie 7.x de Amazon EMR, junto con los componentes que Amazon EMR instala con Presto.

Para ver la versión de los componentes instalados con Presto en esta versión, consulte Versiones de componentes de la [versión 7.12.0](emr-7120-release.md).


**Información sobre la versión de Presto para emr-7.12.0**  

| Etiqueta de versión de Amazon EMR | Versión de Presto | Componentes instalados con 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 | 

En la tabla siguiente, se muestra la versión de Presto incluida en la última versión de la serie Amazon EMR 6.x, junto con los componentes que Amazon EMR instala con Presto.

Para ver la versión de los componentes instalados con Presto en esta versión, consulte [Versiones de los componentes de la versión 6.15.0](emr-6150-release.md).


**Información de la versión de Presto para emr-6.15.0**  

| Etiqueta de versión de Amazon EMR | Versión de Presto | Componentes instalados con 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 | 

En la tabla siguiente, se muestra la versión de Presto incluida en la última versión de la serie Amazon EMR 5.x, junto con los componentes que Amazon EMR instala con Presto.

Para ver la versión de los componentes instalados con Presto en esta versión, consulte [Versiones del componente de la versión 5.36.2](emr-5362-release.md).


**Información de la versión de Presto para emr-5.36.2**  

| Etiqueta de versión de Amazon EMR | Versión de Presto | Componentes instalados con 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**
+ [Uso de Presto con el catálogo de datos de AWS Glue](emr-presto-glue.md)
+ [Uso de S3 Select Pushdown con Presto para mejorar el rendimiento](emr-presto-s3select.md)
+ [Agregar conectores de base de datos](presto-adding-db-connectors.md)
+ [Uso SSL/TLS y configuración de LDAPS con Presto en Amazon EMR](presto-ssl.md)
+ [Activación del modo estricto de Presto](presto-strict-mode.md)
+ [Gestión de la pérdida de instancias de spot en Presto](presto-spot-loss.md)
+ [Uso del escalado automático de Presto con la retirada estable](presto-graceful-autoscale.md)
+ [Consideraciones relacionadas con el uso de Presto en Amazon EMR](emr-presto-considerations.md)
+ [Historial de versiones de Presto](Presto-release-history.md)

# Uso de Presto con el catálogo de datos de AWS Glue
<a name="emr-presto-glue"></a>

Con la versión 5.10.0 de Amazon EMR y versiones posteriores, puede especificar el catálogo de datos de AWS Glue como el metaalmacén de Hive predeterminado para Presto. Recomendamos esta configuración cuando se necesita un metaalmacén persistente o un metaalmacén compartido por diferentes clústeres, servicios, aplicaciones o Cuentas de AWS.

AWS Glue es un servicio de extracción, transformación y carga (ETL) totalmente gestionado que permite clasificar los datos, limpiarlos, enriquecerlos y moverlos de forma fiable entre varios almacenes de datos de forma sencilla y rentable. El catálogo de datos de AWS Glue proporciona un repositorio de metadatos unificado en una variedad de fuentes y formatos de datos, y se integra con Amazon EMR, así como con Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena y cualquier aplicación compatible con el metaalmacén de Apache Hive. AWS Los rastreadores de Glue pueden deducir automáticamente el esquema a partir de los datos de origen en Amazon S3 y almacenar los metadatos asociados en el catálogo de datos. Para obtener más información sobre el catálogo de datos, consulte Cómo [rellenar el catálogo de datos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) en la *Guía del desarrollador de AWS Glue*.

Se aplican cargos separados por AWS Glue. Hay una tarifa mensual para almacenar y acceder a los metadatos del catálogo de datos, una tarifa por hora que se factura por minuto para los trabajos de ETL de AWS Glue y el tiempo de ejecución del rastreador, y una tarifa por hora que se factura por minuto para cada terminal de desarrollo aprovisionado. El Catálogo de datos le permite almacenar hasta un millón de objetos sin cargo alguno. Si almacena más de un millón de objetos, se le cobrará 1 USD por cada 100 000 objetos que sobrepasen esa cifra. En el Catálogo de datos, se consideran objetos las tablas, las particiones y las bases de datos. Para obtener más información, consulte [Precios de Glue](https://aws.amazon.com/glue/pricing).

**importante**  
Si creó tablas con Amazon Athena o Amazon Redshift Spectrum antes del 14 de agosto de 2017, las bases de datos y las tablas se almacenan en un catálogo gestionado por Athena, que es independiente del catálogo de datos de Glue. AWS Para integrar Amazon EMR con estas tablas, debe actualizar al catálogo de datos de AWS Glue. Para obtener más información, consulte [Actualización al catálogo de datos de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) en la Guía del *usuario de Amazon Athena*.

## Especificación de AWS Glue Data Catalog como metaalmacén
<a name="emr-presto-glue-configure"></a>

Puedes especificar el catálogo de datos de AWS Glue como metastore mediante la Consola de administración de AWS API AWS CLI, o Amazon EMR. Cuando utiliza la CLI o la API, utiliza la clasificación de configuración de Presto para especificar el Catálogo de datos. Además, con Amazon EMR 5.16.0 y versiones posteriores, puede usar la clasificación de configuración para especificar un catálogo de datos en otro. Cuenta de AWS Cuando utiliza la consola, puede especificar el Catálogo de datos mediante **Opciones avanzadas** u **Opciones rápidas**.

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

**Para especificar AWS Glue Data Catalog como el metaalmacén de Hive con la nueva consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. En **EMR en EC2** situado en el panel de navegación izquierdo, elija **Clústeres** y, a continuación, elija **Crear clúster**.

1. En **Paquete de aplicaciones**, seleccione **Presto**.

1. En la **Configuración del Catálogo de datos de AWS Glue**, active la casilla de verificación **Utilizar para los metadatos de la tabla de Presto**.

1. Elija cualquier otra opción que se aplique a su clúster. 

1. Para lanzar el clúster, elija **Crear clúster**.

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

**Para especificar el catálogo de datos de AWS Glue como el metastore de Hive predeterminado mediante el AWS CLI**

Para ver ejemplos de cómo especificar las siguientes clasificaciones de configuración al crear un clúster, consulte [Configuración de aplicaciones](emr-configure-apps.md).

**Versiones 5.16.0 y posteriores de Amazon EMR**
+ Establezca la propiedad `hive.metastore` en `glue`, tal y como se muestra en el siguiente ejemplo de JSON.

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

  Para especificar un catálogo de datos en otro Cuenta de AWS, añada la `hive.metastore.glue.catalogid` propiedad tal y como se muestra en el siguiente ejemplo de JSON. Sustituya `acct-id` por la cuenta de AWS del Catálogo de datos. El uso de un Catálogo de datos de otra Cuenta de AWS no está disponible con la versión 5.15.0 y anteriores de Amazon EMR.

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

  **Amazon EMR 5.10.0 a 5.15.0**

  Establezca la propiedad `hive.metastore.glue.datacatalog.enabled` en `true`, tal y como se muestra en el siguiente ejemplo de JSON:

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

  **Amazon EMR 6.1.0 y versiones posteriores con PrestoSQL (Trino)**

  A partir de la versión 6.1.0 de EMR, PrestoSQL también admite Glue como metaalmacén predeterminado de Hive. Utilice la clasificación de configuración `prestosql-connector-hive` para establecer la propiedad `hive.metastore` en `glue`, tal y como se muestra en el siguiente ejemplo de JSON.

  Las versiones 6.4.0 y posteriores de Amazon EMR utilizan el nuevo nombre Trino en lugar de PrestoSQL. Si usa Trino, sustituya `prestosql-connector-hive` en la siguiente clasificación de configuración por `trino-connector-hive`.

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

Para cambiar los metaalmacenes de un clúster de ejecución prolongada, puede establecer manualmente estos valores según corresponda para su versión conectándose al nodo principal, editando los valores de propiedad del archivo `/etc/presto/conf/catalog/hive.properties` directamente y reiniciando el servidor de Presto (`sudo restart presto-server`). Si utiliza este método con Amazon EMR 5.15.0 y versiones anteriores, asegúrese de que `hive.table-statistics-enabled` esté establecido en `false`. Esta configuración no es necesaria cuando se utilizan las versiones 5.16.0 y posteriores; no obstante, no se admiten las estadísticas de tablas y particiones.

------

## Permisos de IAM
<a name="emr-hive-glue-permissions"></a>

El perfil de instancia EC2 de un clúster debe tener permisos de IAM para las acciones de AWS Glue. Además, si habilita el cifrado de los objetos del catálogo de datos de AWS Glue, el rol también debe poder cifrar, descifrar y generar lo que AWS KMS key se utiliza para el cifrado.

### Permisos para las acciones de AWS Glue
<a name="emr-hive-glue-permissions-actions"></a>

Si utiliza el perfil de instancia de EC2 predeterminado para Amazon EMR, no se requiere ninguna acción. La política `AmazonElasticMapReduceforEC2Role` gestionada que se adjunta a la `EMR_EC2_DefaultRole` permite todas las acciones de AWS Glue necesarias. Sin embargo, si especifica un perfil y permisos de instancia EC2 personalizados, debe configurar las acciones de AWS Glue adecuadas. Utilice la política administrada `AmazonElasticMapReduceforEC2Role` como punto de partida. Para más información, consulte [Rol de servicio para instancias de EC2 del clúster (perfil de instancia de EC2)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) en la *Guía de administración de Amazon EMR.*

### Permisos para cifrar y descifrar AWS Glue Data Catalog
<a name="emr-hive-glue-permissions-encrypt"></a>

El perfil de instancia necesita permiso para cifrar y descifrar los datos con su clave. *No* es necesario configurar estos permisos si se cumplen las dos instrucciones siguientes:
+ Para activar el cifrado de los objetos del catálogo de datos de AWS Glue, utilice claves gestionadas para AWS Glue.
+ Usas un clúster que está en el mismo lugar Cuenta de AWS que el catálogo de datos de AWS Glue.

De lo contrario, debe agregar la siguiente instrucción a la política de permisos adjunta al perfil de instancia de EC2. 

Para obtener más información sobre el cifrado del catálogo de datos de AWS Glue, consulte [Cifrar el catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) en la *Guía para desarrolladores de AWS Glue*.

### Permisos basados en recursos
<a name="emr-hive-glue-permissions-resource"></a>

Si usa AWS Glue junto con Hive, Spark o Presto en Amazon EMR, AWS Glue admite políticas basadas en recursos para controlar el acceso a los recursos del catálogo de datos. Estos recursos incluyen bases de datos, tablas, conexiones y funciones definidas por el usuario. Para obtener más información, consulte [Políticas de recursos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) en la *Guía para desarrolladores de AWS Glue*.

Al utilizar políticas basadas en recursos para limitar el acceso a AWS Glue desde Amazon EMR, el principal que especifique en la política de permisos debe ser el ARN del rol asociado al perfil de instancia EC2 que se especifica cuando se crea un clúster. Por ejemplo, para una política basada en recursos adjunta a un catálogo, puede especificar el ARN del rol para el rol de servicio predeterminado para las instancias EC2 del clúster, *EMR\$1EC2\$1DefaultRole* como`Principal`, utilizando el formato que se muestra en el siguiente ejemplo:

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

*acct-id*Puede ser diferente del ID de la cuenta de AWS Glue. Esto permite el acceso desde clústeres de EMR en diferentes cuentas. Puede especificar varias entidades principales, cada una de ellas desde una cuenta diferente.

## Consideraciones a la hora de utilizar AWS Glue Data Catalog
<a name="emr-presto-glue-knownissues"></a>

Tenga en cuenta los siguientes elementos cuando utilice AWS Glue Data Catalog como metaalmacén con Presto:
+ No se admite el cambio de nombre de las tablas desde AWS Glue.
+ Al crear una tabla de Hive sin especificar un valor de `LOCATION`, los datos de la tabla se almacenan en la ubicación especificada por la propiedad `hive.metastore.warehouse.dir`. De manera predeterminada, se trata de una ubicación en HDFS. Si otro clúster necesita acceder a la tabla, se produce un error a menos que tenga los permisos adecuados para el clúster que creó la tabla. Además, dado que el almacenamiento en HDFS es transitorio, si el clúster termina, se pierden los datos de la tabla y, por lo tanto, será necesario volver a crearla. Le recomendamos que especifique una `LOCATION` en Amazon S3 cuando cree una tabla Hive con AWS Glue. Como alternativa, puede utilizar la clasificación de configuración `hive-site` para especificar una ubicación en Amazon S3 para `hive.metastore.warehouse.dir`, que se aplica a todas las tablas de Hive. Si se crea una tabla en una ubicación de HDFS y el clúster que la creó sigue ejecutándose, puedes actualizar la ubicación de la tabla a Amazon S3 desde AWS Glue. Para obtener más información, consulte Cómo [trabajar con tablas en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) en la *Guía para desarrolladores de AWS Glue*. 
+ No se admiten valores de partición que contengan comillas y apóstrofes, por ejemplo, `PARTITION (owner="Doe's").`
+ Las [estadísticas de columnas](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics) son compatibles con emr-5.31.0 y versiones posteriores.
+ No se admite el uso de la [autorización de Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization). Como alternativa, considere la posibilidad de utilizar [políticas basadas en recursos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html). Para obtener más información, consulte [Uso de políticas basadas en recursos para Amazon EMR Access to Glue AWS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) Data Catalog.

# Uso de S3 Select Pushdown con Presto para mejorar el rendimiento
<a name="emr-presto-s3select"></a>

**importante**  
Amazon S3 Select ya no está disponible para los nuevos clientes. Los clientes actuales de Amazon S3 Select pueden seguir utilizando la característica de la forma habitual. [Más información](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Con la versión 5.18.0 y posteriores de Amazon EMR, puede usar [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) Pushdown con Presto en Amazon EMR. Esta característica permite a Presto “delegar” el trabajo de computación de las operaciones de proyección (por ejemplo, `SELECT`) y de las operaciones de predicado (por ejemplo, `WHERE`) en Amazon S3. Esto permite que las consultas recuperen únicamente los datos necesarios desde Amazon S3, lo que puede mejorar el rendimiento y reducir la cantidad de datos transferidos entre Amazon EMR y Amazon S3 en algunas aplicaciones.

## ¿Es S3 Select Pushdown adecuado para mi aplicación?
<a name="emr-presto-s3select-apps"></a>

Le recomendamos que realice un análisis comparativo sus aplicaciones con y sin S3 Select Pushdown para ver si su uso puede ser adecuado para su aplicación.

Utilice las siguientes directrices para determinar si la aplicación es candidata a utilizar S3 Select:
+ La consulta filtra más de la mitad del conjunto de datos original.
+ Los predicados del filtro de consulta utilizan columnas que tienen un tipo de datos compatible con Presto y con S3 Select. Los tipos de datos de marca de tiempo, real y doble no son compatibles con S3 Select Pushdown. Le recomendamos que utilice el tipo de datos decimal para los datos numéricos. Para obtener más información acerca de los tipos de datos compatibles con S3 Select, consulte [Tipos de datos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+ La conexión de red entre Amazon S3 y el clúster de Amazon EMR tiene una buena velocidad de transferencia y ancho de banda disponible. Amazon S3 no comprime las respuestas HTTP, por lo que es probable que el tamaño de la respuesta aumente en el caso de los archivos de entrada comprimidos.

## Consideraciones y limitaciones
<a name="emr-presto-s3select-considerations"></a>
+ Solo se admiten los objetos almacenados en formato CSV. Los objetos se pueden estar sin comprimir o comprimidos con gzip o bzip2.
+ No se admite la propiedad `AllowQuotedRecordDelimiters`. Si se especifica esta propiedad, se producirá un error en la consulta.
+ No se admiten el cifrado del servidor de Amazon S3 con claves de cifrado proporcionadas por el cliente (SSE-C) ni el cifrado del cliente. 
+ S3 Select Pushdown no sustituye al uso de formatos de archivo comprimido o en columnas como ORC o Parquet.
+ Amazon S3 Select no admite consultas entre regiones para Presto y Trino.

## Habilitar S3 Select Pushdown con PrestoDB o Trino
<a name="emr-presto-s3select-specify"></a>

Para habilitar S3 Select Pushdown para PrestoDB en Amazon EMR, utilice la clasificación de configuración `presto-connector-hive` para establecer `hive.s3select-pushdown.enabled` en `true`, tal y como se muestra en el siguiente ejemplo. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md). El valor de hive.s3select-pushdown.max-connections también se debe establecer. Para la mayoría de las aplicaciones, la configuración predeterminada, `500`, debería ser suficiente. Para obtener más información, consulte [Descripción y ajuste de hive.s3select-pushdown.max-connections](#emr-presto-s3select-max) más abajo.

Para PrestoSQL en las versiones 6.1.0 a 6.3.0 de EMR, sustituya `presto-connector-hive` en el siguiente ejemplo por `prestosql-connector-hive`.

Las versiones 6.4.0 y posteriores de Amazon EMR utilizan el nuevo nombre Trino en lugar de PrestoSQL. Si usa Trino, sustituya `presto-connector-hive` en el ejemplo siguiente por `trino-connector-hive`

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

### Descripción y ajuste de hive.s3select-pushdown.max-connections
<a name="emr-presto-s3select-max"></a>

De forma predeterminada, Presto utiliza EMRFS como sistema de archivos. El ajuste `fs.s3.maxConnections` de la clasificación de configuración `emrfs-site` especifica el número máximo permitido de conexiones de cliente a Amazon S3 a través de EMRFS para Presto. El valor predeterminado es 500. S3 Select Pushdown no utiliza EMRFS al obtener acceso a Amazon S3 para las operaciones de predicado. En este caso, el valor de `hive.s3select-pushdown.max-connections` determina el número máximo de conexiones de cliente permitidas para dichas operaciones desde los nodos de trabajo. Sin embargo, para todas las solicitudes a Amazon S3 iniciadas por Presto y que no se delegan, como, por ejemplo, las operaciones GET, se sigue teniendo en cuenta el valor de `fs.s3.maxConnections`.

Si la aplicación muestra el error "Timeout waiting for connection from pool" (Tiempo de espera esperando la conexión desde el grupo), incremente los valores de `hive.s3select-pushdown.max-connections` y `fs.s3.maxConnections`.

# Agregar conectores de base de datos
<a name="presto-adding-db-connectors"></a>

Puede utilizar clasificaciones de configuración para configurar las propiedades del conector JDBC al crear un clúster. Las clasificaciones de configuración comienzan por `presto-connector`, por ejemplo, `presto-connector-postgresql`. Las clasificaciones de configuración disponibles varían en función de la versión de Amazon EMR. Para ver las clasificaciones de configuración disponibles con la versión más reciente, consulte [Clasificaciones de configuración de la versión 5.36.2](emr-5362-release.md#emr-5362-class) para Amazon EMR 5.36.2. Si utiliza una versión diferente de Amazon EMR, consulte [Versiones de lanzamiento de Amazon EMR 5.x](emr-release-5x.md) para conocer las clasificaciones de configuración. Para obtener más información sobre las propiedades que se pueden configurar con cada conector, consulte. [https://prestodb.io/docs/current/connector.html](https://prestodb.io/docs/current/connector.html) 

**Example : configuración de un clúster con el conector JDBC de PostgreSQL**  
Para lanzar un clúster con el conector de PostgreSQL instalado y configurado, primero debe crear un archivo JSON que especifique la clasificación de configuración (por ejemplo, `myConfig.json`) con el siguiente contenido, y guarde localmente.  
Sustituya las propiedades de conexión según sea apropiado para su configuración, tal y como se muestra en el tema [Conector de PostgreSQL](https://prestodb.io/docs/current/connector/postgresql.html) de la documentación de Presto.  

```
[
  {
    "Classification": "presto-connector-postgresql",
    "Properties": {
      "connection-url": "jdbc:postgresql://example.net:5432/database",
      "connection-user": "MYUSER",
      "connection-password": "MYPASS"
    },
    "Configurations": []
  }
]
```
Al crear el clúster, haga referencia a la ruta del archivo JSON mediante la opción `--configurations`, tal y como se muestra en el siguiente ejemplo, donde `myConfig.json` se encuentra en el mismo directorio en el que se ejecuta el comando:  

```
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
```

# Uso SSL/TLS y configuración de LDAPS con Presto en Amazon EMR
<a name="presto-ssl"></a>

Con la versión 5.6.0 y posteriores de Amazon EMR, puede ayudar SSL/TLS a [proteger la comunicación interna](https://prestodb.io/docs/current/security/internal-communication.html) entre los nodos de Presto. Para ello, se establece una configuración de seguridad para el cifrado en tránsito. Para obtener más información, consulte [Opciones de cifrado](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) y [Uso de configuraciones de seguridad para definir la seguridad del clúster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) en la *Guía de administración de Amazon EMR*.

Cuando se utiliza una configuración de seguridad con el cifrado en tránsito, Amazon EMR hace lo siguiente para Presto:
+ Distribuye los artefactos de cifrado o los certificados que especifique para el cifrado en tránsito a lo largo del clúster de Presto. Para obtener más información, consulte [Proporcionar certificados para cifrado de datos en tránsito](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates).
+ Establece las siguientes propiedades utilizando la clasificación de configuración `presto-config`, que se corresponde con el archivo `config.properties` de Presto:
  + Establece `http-server.http.enabled` en `false` en todos los nodos, lo que deshabilita HTTP en favor de HTTPS. Esto requiere que proporcione certificados que funcionen para DNS públicos y privados al configurar la configuración de seguridad para el cifrado en tránsito. Una forma de hacerlo es utilizar certificados SAN (nombre alternativo del sujeto) que admitan varios dominios.
  + Establece los valores de `http-server.https.*`. Para conocer los detalles de configuración, consulte [LDAP Authentication](https://prestodb.io/docs/current/security/ldap.html) en la documentación de Presto.

Además, con Amazon EMR versión 5.10.0 y posteriores, puede configurar la [autenticación LDAP](https://prestodb.io/docs/current/security/ldap.html) para las conexiones de cliente con el coordinador de Presto mediante HTTPS. Esta configuración utiliza LDAP seguro (LDAPS). TLS debe estar habilitado en su servidor LDAP y el clúster de Presto debe utilizar una configuración de seguridad con el cifrado de datos en tránsito habilitado. Se requiere configuración adicional. Las opciones de configuración son diferentes en función de la versión de Amazon EMR que utilice. Para obtener más información, consulte [Uso de la autenticación LDAP para Presto en Amazon EMR](emr-presto-ldap.md).

Presto en Amazon EMR utiliza el puerto 8446 para HTTPS interno de forma predeterminada. El puerto utilizado para la comunicación interna debe ser el mismo puerto utilizado para el acceso HTTPS del cliente al coordinador de Presto. La propiedad `http-server.https.port` de la configuración de clasificación `presto-config` especifica el puerto.

# Uso de la autenticación LDAP para Presto en Amazon EMR
<a name="emr-presto-ldap"></a>

Siga los pasos de esta sección para configurar LDAP. Examine cada paso para ver ejemplos y enlaces a información adicional.

**Topics**
+ [Paso 1: recopilar información sobre su servidor LDAP y copiar el certificado de servidor en Amazon S3](#emr-presto-ldap-server-prereq)
+ [Paso 2: Definir una configuración de seguridad](#emr-presto-ldap-seccfg)
+ [Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP](#emr-presto-ldap-prestoconfig)
+ [Paso 4: crear el script para copiar el certificado de servidor LDAP y cargarlo en Amazon S3](#emr-presto-ldap-servercert)
+ [Paso 5: Crear el clúster](#emr-presto-ldap-createcluster)

## Paso 1: recopilar información sobre su servidor LDAP y copiar el certificado de servidor en Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

Necesitará la información y los elementos de la siguiente sección de su servidor LDAP para configurar la autenticación de LDAP.

### La dirección IP o el nombre de host del servidor LDAP
<a name="w2aac60c39c13b7b5"></a>

El coordinador de Presto en el nodo maestro de Amazon EMR debe poder conectarse al servidor LDAP en la dirección IP o el nombre de host especificados. De forma predeterminada, Presto se comunica con el servidor LDAP mediante LDAPS a través del puerto 636. Si su implementación de LDAP requiere un puerto personalizado, puede especificarlo mediante la propiedad `ldap.url` con Amazon EMR 5.16.0 o versiones posteriores, o utilizar `authentication.ldap.url` con versiones anteriores. Sustituya el puerto personalizado de `636` que se muestra en los ejemplos de clasificación de configuración `presto-config` en [Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP](#emr-presto-ldap-prestoconfig). Asegúrese de que todos los firewalls y grupos de seguridad permiten el tráfico entrante y saliente en el puerto 636 (o en el puerto personalizado) y también en el puerto 8446 (o en el puerto personalizado), que se utiliza para las comunicaciones internas del clúster.

### El certificado del servidor LDAP
<a name="w2aac60c39c13b7b7"></a>

Debe cargar el archivo de certificado en una ubicación segura en Amazon S3. Para obtener más información, consulte [¿Cómo puedo cargar archivos y carpetas en un bucket de S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) en la *Guía del usuario de Amazon Simple Storage Service*. Debe crear una acción de arranque que copie este certificado de Amazon S3 en cada nodo del clúster cuando se lance el clúster. En [Paso 4: crear el script para copiar el certificado de servidor LDAP y cargarlo en Amazon S3](#emr-presto-ldap-servercert). El certificado de ejemplo es. *s3://amzn-s3-demo-bucket/ldap\$1server.crt*

### La configuración del servidor LDAP para la conexión anónima
<a name="w2aac60c39c13b7b9"></a>

Si la conexión anónima está deshabilitada en PrestoDB, necesita el ID de usuario (UID) y la contraseña de una cuenta con permisos para conectarse al servidor LDAP, de modo que el servidor de PrestoDB pueda establecer una conexión. El UID y la contraseña se especifican con las propiedades `internal-communication.authentication.ldap.user` e `internal-communication.authentication.ldap.password` en la clasificación de configuración `presto-config`. Amazon EMR 5.10.0 no admite esta configuración, por lo que la conexión anónima debe permitirse en el servidor LDAP cuando se utiliza esta versión.

Tenga en cuenta que Trino no requiere la configuración de enlace anónimo.

**Para obtener el estado de la conexión anónima en el servidor LDAP**
+ Utilice el comando [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) desde un cliente Linux, tal y como se muestra en el ejemplo siguiente:

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

  Si la conexión anónima no está permitida, el comando devuelve lo siguiente:

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

**Para verificar que una cuenta tiene permisos para un servidor LDAP que utiliza la autenticación sencilla**
+ Utilice el comando [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) desde un cliente Linux, tal y como se muestra en el ejemplo siguiente. El ejemplo utiliza un usuario ficticio*presto*, almacenado en un servidor Open LDAP que se ejecuta en una instancia EC2 con un nombre de host ficticio. *ip-xxx-xxx-xxx-xxx.ec2.internal* El usuario está asociado a la unidad organizativa (OU) *admins* y a la contraseña: *123456*

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

  Si la cuenta es válida y tiene los permisos adecuados, el comando devuelve:

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

Las configuraciones de ejemplo de [Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP](#emr-presto-ldap-prestoconfig) incluyen esta cuenta por razones de claridad, con la excepción del ejemplo de 5.10.0, en el que no se admite. Si el servidor LDAP utiliza un enlace anónimo, elimine los pares `internal-communication.authentication.ldap.user` y `internal-communication.authentication.ldap.password` name/value .

### El nombre distintivo (DN) de LDAP para los usuarios de Presto
<a name="w2aac60c39c13b7c11"></a>

Al especificar la configuración LDAP para Presto, se especifica un patrón de enlace que consiste en una unidad organizativa (OU) y componentes de `${USER}` dominio adicionales (). DCs Presto sustituye `${USER}` por el ID de usuario (UID) real de cada usuario durante la autenticación de contraseñas para que coincida con el nombre distintivo (DN) que este patrón de conexión especifica. Necesita la propiedad a la OUs que pertenecen los usuarios aptos y sus DCs Por ejemplo, para permitir que los usuarios de la unidad organizativa `admins` del dominio `corp.example.com` se autentiquen en Presto, debe especificar `${USER},ou=admins,dc=corp,dc=example,dc=com` como el patrón de conexión del usuario.

**nota**  
Cuando la utilices AWS CloudFormation, tendrás que utilizar la función Fn: :Sub para sustituirla por la ID `${USER}` de usuario (UID) real. Para obtener más información, consulte el tema [Fn::Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) en la *Guía del usuario de AWS CloudFormation *.

Cuando utilice Amazon EMR 5.10.0, solo puede especificar un patrón de este tipo. Con Amazon EMR 5.11.0 o versiones posteriores, puede especificar varios patrones separados por un signo de dos puntos (:). Los usuarios que intentan autenticarse en Presto se cotejan con el primer patrón, después con el segundo y así sucesivamente. Para ver un ejemplo, consulta [Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP](#emr-presto-ldap-prestoconfig).

## Paso 2: Definir una configuración de seguridad
<a name="emr-presto-ldap-seccfg"></a>

Cree una configuración de seguridad con el cifrado en tránsito habilitado. Para obtener más información, consulte [Creación de una configuración de seguridad](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) en la *Guía de administración de Amazon EMR*. Los artefactos de cifrado que proporcionó al configurar el cifrado en tránsito se utilizan para cifrar la comunicación interna entre los nodos de Presto. Para obtener más información, consulte [Proporcionar certificados para cifrado de datos en tránsito](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). El certificado de servidor LDAP se utiliza para autenticar las conexiones cliente con el servidor de Presto.

## Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP
<a name="emr-presto-ldap-prestoconfig"></a>

Se utiliza la clasificación de configuración `presto-config` para establecer las propiedades de Presto para LDAP. El formato y el contenido de `presto-config` varían ligeramente según la versión de lanzamiento de Amazon EMR y la instalación de Presto (PrestoDB o Trino). Más adelante en esta sección, se proporcionan ejemplos de las diferencias de configuración. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md).

En los siguientes pasos se supone que guardas los datos JSON en un archivo,. *MyPrestoConfig.json* Si utiliza la consola, cargue el archivo en un lugar seguro en Amazon S3 para que pueda hacer referencia a él cuando cree el clúster. Si usa el AWS CLI, puede hacer referencia al archivo localmente.

**Example Amazon EMR 6.1.0 y versiones posteriores con PrestoSQL (Trino)**  
En el siguiente ejemplo, se utiliza el nombre de host de LDAP de [Paso 1: recopilar información sobre su servidor LDAP y copiar el certificado de servidor en Amazon S3](#emr-presto-ldap-server-prereq) para la autenticación en el servidor LDAP para la conexión. Se especifican dos patrones de conexión de usuario, que indican que los usuarios dentro de las unidades organizativas `admins` y `datascientists` del servidor LDAP reúnen los requisitos para la autenticación en el servidor de Trino como usuarios. Los patrones de conexión están separados por un signo de dos puntos (`:`).  
Las versiones 6.4.0 y posteriores de Amazon EMR utilizan el nuevo nombre Trino en lugar de PrestoSQL. Si usa Trino, sustituya *`prestosql-config`* en la siguiente clasificación de configuración por `trino-config` y `prestosql-password-authenticator` por `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 Versiones 5.16.0 y posteriores de Amazon EMR**  
En el siguiente ejemplo se utiliza el ID de usuario y la contraseña de LDAP y el nombre de host de LDAP [Paso 1: recopilar información sobre su servidor LDAP y copiar el certificado de servidor en Amazon S3](#emr-presto-ldap-server-prereq) para la autenticación en el servidor LDAP para la conexión. Se especifican dos patrones de conexión de usuario, que indican que los usuarios dentro de las unidades organizativas `admins` y `datascientists` del servidor LDAP reúnen los requisitos para la autenticación en el servidor de Presto como usuarios. Los patrones de conexión están separados por un signo de dos puntos (`:`).  

```
[{
        "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 a 5.15.0**  
El formato de la clasificación de configuración `presto-config `es ligeramente diferente para estas versiones. En el siguiente ejemplo se especifican los mismos parámetros que en el ejemplo anterior.  

```
[{
        "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 solo admite la conexión anónima, por lo que se omiten estas entradas. Además, solo se puede especificar un patrón de conexión.  

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

## Paso 4: crear el script para copiar el certificado de servidor LDAP y cargarlo en Amazon S3
<a name="emr-presto-ldap-servercert"></a>

Cree un script que copie el archivo de certificado en cada nodo del clúster y lo añada al almacén de claves. Cree el script con un editor de texto, guárdelo y, a continuación, cárguelo en Amazon S3. En[Paso 5: Crear el clúster](#emr-presto-ldap-createcluster), se hace referencia al archivo de script como*s3://amzn-s3-demo-bucket/LoadLDAPCert.sh*.

El siguiente script de ejemplo utiliza la contraseña predeterminada del almacén de claves,*changeit*. Le recomendamos que se conecte al nodo principal después de crear el clúster y que cambie la contraseña del almacén de claves con el comando 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
```



## Paso 5: Crear el clúster
<a name="emr-presto-ldap-createcluster"></a>

Al crear el clúster, debe especificar Presto y demás aplicaciones que desee que Amazon EMR instale. Los siguientes ejemplos también hacen referencia a las propiedades de clasificación de configuración de un archivo JSON, pero también puede especificar la clasificación de configuración directamente.

**Para crear un clúster de Presto con autenticación LDAP mediante la consola de Amazon EMR**

1. Vaya hasta la nueva consola de Amazon EMR y seleccione **Ir a la consola antigua** en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte [Uso de la consola antigua](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Elija **Crear clúster** e **Ir a las opciones avanzadas**.

1. Elija **Presto** junto con las demás aplicaciones que desee que Amazon EMR instale y, en **Configuración de software**, seleccione un valor en **Versión** para la versión de Amazon EMR que desee utilizar. La autenticación LDAP solo se admite con Amazon EMR 5.10.0 y versiones posteriores.

1. En **Editar configuración de software**, elija **Cargar JSON desde S3**, escriba la ubicación en Amazon S3 del archivo de configuración JSON que creó en [Paso 3: Crear una configuración JSON con propiedades de Presto para LDAP](#emr-presto-ldap-prestoconfig) y, a continuación, elija **Siguiente**.

1. Configure el hardware y la conexión en red del clúster y, a continuación, elija **Next (Siguiente)**.

1. Elija **Bootstrap Actions (Acciones de arranque)**. En **Add bootstrap action (Añadir acción de arranque)**, seleccione **Custom action (Acción personalizada)** y después elija **Configure and add (Configurar y añadir)**.

1. **Introduzca un **nombre** para la acción de arranque, introduzca la **ubicación del script** en la que la creó (por ejemplo[Paso 4: crear el script para copiar el certificado de servidor LDAP y cargarlo en Amazon S3](#emr-presto-ldap-servercert), **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**) y, a continuación, seleccione Añadir.**

1. En **General Options (Opciones generales)**, **Tags (Etiquetas)** y **Additional Options (Opciones adicionales)**, elija la configuración adecuada para su aplicación y después elija **Next (Siguiente)**.

1. Elija **Authentication and encryption (Autenticación y cifrado)** y, a continuación, seleccione el valor de **Security configuration (Configuración de seguridad)** correspondiente a la configuración de seguridad que creó en el [Paso 2: Definir una configuración de seguridad](#emr-presto-ldap-seccfg).

1. Elija otras opciones de seguridad que sean necesarias para su aplicación y, a continuación, elija **Create cluster (Crear clúster)**.

**Para crear un clúster de Presto con autenticación LDAP mediante AWS CLI**
+ Utilice el comando `aws emr create-cluster`. Como mínimo, especifique la aplicación de Presto y también la clasificación de configuración de Presto, el script de arranque y la configuración de seguridad que creó en los pasos anteriores. El siguiente ejemplo hace referencia al archivo de configuración como un archivo JSON guardado en el mismo directorio en el que se ejecuta el comando. El script de arranque, por otro lado, debe guardarse en Amazon S3. El siguiente ejemplo utiliza `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`.
**nota**  
Se incluyen caracteres de continuación de línea de Linux (\$1) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

  ```
  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
  ```

# Activación del modo estricto de Presto
<a name="presto-strict-mode"></a>

En determinadas situaciones, las consultas de larga duración pueden generar costos elevados y hacer que Amazon EMR utilice más recursos del clúster. Esto reduce los recursos de otras cargas de trabajo del clúster. Con las versiones 6.8 y posteriores de Amazon EMR, puede utilizar una característica de modo estricto que rechaza o advierte sobre los siguientes tipos de consultas de larga duración:
+ Consultas sin predicados en las columnas particionadas que dan como resultado el escaneo de tablas de grandes cantidades de datos
+ Consultas con uniones cruzadas entre dos tablas grandes
+ Consultas que ordenan un gran número de filas sin límite

Una vez que Presto optimiza completamente el plan de consultas, se ejecuta el modo estricto. Para usar y personalizar el modo estricto según sus necesidades de consulta, puede configurar Presto de las siguientes maneras.


**Configuraciones de Presto para el modo estricto**  

| Opción | Description (Descripción) | Predeterminado | 
| --- | --- | --- | 
| strict-mode-enabled | Activa y desactiva el modo estricto. Un valor de true indica que el modo estricto está activado. | false | 
| strict-mode-fail-query | Rechaza las consultas si el modo estricto detecta consultas probables de larga duración. Si false, Amazon EMR solo genera una advertencia.  | false | 
| strict-mode-restrictions | Especifica las restricciones que se aplicarán cuando se active el modo estricto. El modo estricto admite las siguientes restricciones: MANDATORY\$1PARTITION\$1PREDICATE, DISALLOW\$1CROSS\$1JOIN, and LIMITED\$1SORT. |  MANDATORY\$1PARTITION\$1PREDICATE,DISALLOW\$1CROSS\$1JOIN, LIMITED\$1SORT  | 

Para experimentar con el modo estricto, puede anular estas configuraciones o establecerlas como propiedades de sesión cuando utilice el cliente Presto. 

**Para establecer la configuración en el momento de la creación del clúster con Consola de administración de AWS**

1. Elija **Crear clúster** y seleccione Amazon EMR versión 6.8.0 y Presto o Trino. Para obtener más información, consulte [Instalación de PrestoDB y Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-considerations.html#emr-prestodb-prestosql). 

1. Especifique directamente las propiedades de configuración para el modo estricto o cargue un archivo JSON en Amazon S3. Si lo desea, seleccione el catálogo de datos de AWS Glue para su metastore. Especifique la VPC, las subredes, las acciones de arranque, el par de claves y el grupo de seguridad. Elija **Crear cluster** para crear el clúster. 

1. Inicie sesión en el nodo principal del clúster y ejecute `presto-cli` o `trino-cli`. 

1. Envíe sus consultas. El modo estricto valida cada consulta y determina si es de larga duración. Según la configuración de `strict-mode-fail-query`, Amazon EMR rechaza la consulta o genera una advertencia. 

1. Cuando haya terminado con las consultas, finalice el clúster y elimine los recursos. 

**Para establecer la configuración en un clúster en ejecución con AWS CLI**

1. Inicie sesión en el nodo principal del clúster con AWS CLI y ejecute `presto-cli` o`trino-cli`.

1. Ejecute los siguientes comandos con los valores que desee. 

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

## Consideraciones
<a name="presto-strict-mode-considerations"></a>

Cuando utilice el modo estricto, tenga en cuenta lo siguiente: 
+ En algunos casos, el modo estricto puede rechazar consultas de corta duración que no consuman muchos recursos. Por ejemplo, las consultas en tablas pequeñas no aplican filtros dinámicos ni sustituyen las uniones internas por uniones cruzadas. Esto puede llevar a la consulta a utilizar el predicado de partición obligatorio o a no permitir la unión cruzada. Cuando esto sucede, el modo estricto rechaza la consulta. 
+ La comprobación del modo estricto solo se aplica a los tipos de consulta SELECT, INSERT, CREATE TABLE AS SELECT y EXPLAIN ANALYZE. 
+ Solo puede utilizar la restricción en el predicado de partición obligatorio con el conector Hive. 

# Gestión de la pérdida de instancias de spot en Presto
<a name="presto-spot-loss"></a>

Con las instancias de spot de Amazon EMR, puede ejecutar cargas de trabajo de macrodatos en la capacidad sobrante de Amazon EC2 a un costo reducido. A cambio de un menor costo, Amazon EC2 puede interrumpir las instancias de spot con una notificación de dos minutos. Al cerrar un nodo, Presto puede tardar hasta 10 minutos en generar un error. Esto provoca demoras innecesarias en los informes de errores y en los posibles reintentos. La terminación rápida es una característica que le permite controlar la forma en que Presto gestiona los nodos terminados.

El trabajo del coordinador de Presto consiste en hacer un seguimiento de todos los nodos de trabajo mediante sondeos periódicos sobre sus estados. Sin una terminación rápida, el coordinador no consulta el YARN NodeManager para conocer el estado de cada nodo. Esto puede provocar un ciclo de reintento prolongado antes de que la consulta falle. Con una terminación rápida, el coordinador de Presto consulta el estado del nodo tan pronto NodeManager como la encuesta no llegue al anfitrión. Si NodeManager muestra que el nodo está inactivo, Presto abandona los reintentos, falla la consulta y devuelve un error. `NODE_DECOMMISSIONED`

El siguiente conjunto de parámetros de configuración le permite controlar y personalizar el comportamiento de Presto en caso de que se cierre el nodo.


**Configuraciones de Presto para la gestión de errores de los nodos**  

| Opción | Description (Descripción) | Predeterminado | 
| --- | --- | --- | 
| query.remote-task.max-backoff-duration | El tiempo que el coordinador continúa intentando recuperar el estado de la tarea remota desde los nodos de trabajo. | 10 minutos | 
| query.remote-task.quick-terminate-node-failure |  Activa un error rápido en el nodo si el coordinador no puede llegar al nodo o no puede conectarse con el trabajador que se ejecuta en ese nodo. El valor de `query.remote-task.terminate-on-connect-exception` determina si el coordinador debe llegar al nodo o conectarse con el trabajador. El nodo no supera la consulta y Amazon EMR lo elimina de la lista de trabajadores disponibles. Cuando esto sucede, no puede usar el nodo para programar consultas nuevas. Si establece este valor en `false`, Presto vuelve a su comportamiento anterior, en el que el coordinador de Presto vuelve a intentar llegar al nodo (para `query.remote-task.max-backoff-duration`) antes de marcar el nodo como no disponible y no llevar a cabo la consulta en curso en el nodo.  | true | 
| query.remote-task.terminate-on-connect-exception | Especifica si Amazon EMR debe ser un nodo si se puede acceder al host, pero el coordinador no puede conectarse al proceso de trabajo del host. Al establecer este valor en true, se activa el error de consulta rápida si no se puede acceder al host. | false | 

# Uso del escalado automático de Presto con la retirada estable
<a name="presto-graceful-autoscale"></a>

Las versiones 5.30.0 y posteriores de Amazon EMR incluyen una característica que puede utilizar para establecer un periodo de gracia para determinadas acciones de escalado. El periodo de gracia permite que las tareas de Presto se ejecuten antes de que se termine el nodo debido a una acción de cambio para reducir horizontalmente o a una solicitud de política de escalado automático. Para obtener más información sobre las reglas de escalado, consulte [Descripción de las reglas de escalado automático](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html#emr-scaling-rules) en la *Guía de administración de Amazon EMR.* El escalado automático con retirada estable de Presto evita que se programen nuevas tareas en un nodo que se está retirando, mientras que, al mismo tiempo, permite que las tareas que ya se están ejecutando se completen antes de que se alcance el tiempo de espera de cierre. Las consultas que se están ejecutando terminarán de ejecutarse antes de que se retire el nodo. El escalado automático no se admite en las flotas de instancias.

Puede controlar el tiempo que tardarán en completarse las tareas de Presto después de recibir una solicitud de cierre con escala automática. De forma predeterminada, el tiempo de espera de cierre de Amazon EMR es de `0` minutos, lo que significa que Amazon EMR termina inmediatamente el nodo y cualquier tarea de Presto que se ejecute en él, si así lo requiere una solicitud de escalado. Para establecer un tiempo de espera más largo para las tareas de Presto en Amazon EMR para permitir que las consultas en ejecución se completen antes de reducir la capacidad de un clúster, utilice la clasificación de configuración `presto-config` para establecer el parámetro `graceful-shutdown-timeout` en un valor de segundos o minutos mayores que cero. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md).

Por ejemplo, cuando se aumenta el valor de `graceful-shutdown-timeout` a `"30m"`, se especifica un periodo de 30 minutos. Una vez finalizado el periodo de tiempo de espera de cierre, se aplica un cierre forzoso al nodo marcado para retirada si está esperando a que se completen las tareas de consulta y se produce un error en la consulta. Si las tareas de consulta finalizan en cinco minutos, el nodo marcado para retirada terminará, siempre que otras aplicaciones de YARN hayan completado la ejecución.

**Example Ejemplo de configuración de escalado automático con retirada estable de nodos**  
Reemplace el valor de `graceful-shutdown-timeout` por el número de minutos apropiado para su configuración. No hay ningún valor máximo. El siguiente ejemplo establece un valor de tiempo de espera de `1800` segundos (30 minutos).  

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

**Limitaciones**

PrestoDB Graceful Decommission no funciona en clústeres de EMR en los que la conectividad HTTP está deshabilitada, por ejemplo, cuando `http-server.http.enabled` está configurada en `false`. Trino no es compatible en absoluto con Graceful Decommission, independientemente de la configuración `http-server.http.enabled`.

# Consideraciones relacionadas con el uso de Presto en Amazon EMR
<a name="emr-presto-considerations"></a>

Tenga en cuenta las siguientes limitaciones al ejecutar [Presto](https://aws.amazon.com/big-data/what-is-presto/) en Amazon EMR.

## Ejecutable de línea de comandos de Presto
<a name="emr-presto-command-line-cli"></a>

En Amazon EMR, PrestoDB y Trino utilizan el mismo ejecutable de línea de comandos, `presto-cli`, como en el siguiente ejemplo.

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

## Propiedades de la implementación de Presto no configurables
<a name="emr-presto-deployment-config"></a>

La versión de Amazon EMR que utilice determina las configuraciones de implementación de Presto disponibles. Para obtener más información sobre estas propiedades de configuración, consulte [Implementación de Presto](https://prestodb.io/docs/current/installation/deployment.html) en la documentación de Presto. En la siguiente tabla, se muestran las distintas opciones de configuración de los archivos `properties` de Presto.


| Archivos | Configurable | 
| --- | --- | 
|  `log.properties`  |  PrestoDB: versiones 4.0.0 y posteriores configurables de Amazon EMR. Utilice la clasificación de configuración `presto-log`.  | 
|  `config.properties`  |  PrestoDB: versiones 4.0.0 y posteriores configurables de Amazon EMR. Utilice la clasificación de configuración `presto-config`.  | 
|  `hive.properties`  |  PrestoDB: versiones 4.1.0 y posteriores configurables de Amazon EMR. Utilice la clasificación de configuración `presto-connector-hive`.  | 
|  `node.properties`  |  PrestoDB: versiones 5.6.0 y posteriores configurables de Amazon EMR. Utilice la clasificación de configuración `presto-node`.  | 
|  `jvm.config`  |  No se puede configurar.  | 

## Instalación de PrestoDB
<a name="emr-prestodb-prestosql"></a>

El nombre de la aplicación *Presto* se sigue utilizando para instalar PrestoDB en los clústeres. 

Puede instalar PrestoDB o Trino, pero no puede instalar ambos en un solo clúster. Si se especifican PrestoDB y Trino al intentar crear un clúster, se produce un error tanto en la validación como en la solicitud de creación del clúster.

## Configuración de EMRFS y PrestoS3 FileSystem
<a name="emr-presto-prestos3"></a>

Con las versiones 5.12.0 y posteriores de Amazon EMR, PrestoDB puede utilizar EMRFS. Para obtener más información, consulte [Sistema de archivos de EMR (EMRFS)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs) en la *Guía de administración de Amazon EMR*. En las versiones anteriores de Amazon EMR, PrestoS3 FileSystem es la única opción de configuración.

Se puede utilizar una configuración de seguridad para configurar el cifrado de los datos de EMRFS en Amazon S3. También puede utilizar roles de IAM para las solicitudes de EMRFS a Amazon S3. Para obtener más información, consulte [Descripción de las opciones de cifrado](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) y [Configuración de roles de IAM para solicitudes de EMRFS a Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html) en la *Guía de administración de Amazon EMR*.

**nota**  
Si consulta los datos subyacentes en Amazon S3 con la versión 5.12.0 de Amazon EMR, pueden producirse errores en Presto. Esto se debe a que Presto no recoge los valores de clasificación de configuración de `emrfs-site.xml`. Como solución alternativa, cree un subdirectorio de `emrfs` en `usr/lib/presto/plugin/hive-hadoop2/` y cree un enlace simbólico en `usr/lib/presto/plugin/hive-hadoop2/emrfs` al archivo `/usr/share/aws/emr/emrfs/conf/emrfs-site.xml` existente. A continuación, reinicie el proceso presto-server (`sudo presto-server stop` seguido de `sudo presto-server start`). 

Puede anular el EMRFS predeterminado y utilizar PrestoS3 en su lugar. FileSystem Para ello, utilice la clasificación de configuración `presto-connector-hive` para establecer `hive.s3-file-system-type` en `PRESTO`, tal como se muestra en el siguiente ejemplo. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md).

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

Si utiliza PrestoS3, utilice la clasificación de configuración para configurar las FileSystem propiedades de PrestoS3. `presto-connector-hive` FileSystem Para obtener más información sobre las propiedades disponibles, consulte [Configuración de Amazon S3](https://prestodb.io/docs/current/connector/hive.html#amazon-s3-configuration) en la sección Conector de Hive de la documentación de Presto. Estas opciones no se aplican a EMRFS.

## Configuración predeterminada para la suplantación del usuario final
<a name="emr-presto-end-user-impersonation"></a>

De forma predeterminada, las versiones 5.12.0 y posteriores de Amazon EMR permiten la suplantación del usuario final para obtener acceso a HDFS. Para obtener más información, consulte [Suplantación de usuarios finales](https://prestodb.io/docs/current/connector/hive-security.html#end-user-impersonation) en la documentación de Presto. Para cambiar esta configuración con la clasificación de configuración de `presto-config`, establezca la propiedad `hive.hdfs.impersonation.enabled` en `false`.

## Puerto predeterminado para la interfaz web de Presto
<a name="emr-presto-default-web-port"></a>

De forma predeterminada, Amazon EMR configura la interfaz web de Presto en el coordinador de Presto para que utilice el puerto 8889 (para PrestoDB y Trino). Para cambiar el puerto, utilice la clasificación de configuración `presto-config` para establecer la propiedad de `http-server.http.port`. Para obtener más información, consulte [Propiedades de configuración](https://prestodb.io/docs/current/installation/deployment.html#config-properties) en la sección *Implementación de Presto* de la documentación de Presto.

## Problema con la ejecución del bucket de Hive en algunas versiones
<a name="emr-presto-bucket-execution"></a>

Presto versión 152.3 tiene un problema con la ejecución de buckets de Hive que provoca un rendimiento de consultas de Presto notablemente más lento en algunas circunstancias. Las versiones 5.0.3, 5.1.0 y 5.2.0 de Amazon EMR incluyen esta versión de Presto. Para mitigar este problema, utilice la clasificación de configuración `presto-connector-hive` para establecer la propiedad `hive.bucket-execution` en `false`, tal y como se muestra en el siguiente ejemplo.

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

# Historial de versiones de Presto
<a name="Presto-release-history"></a>

En la siguiente tabla, se muestra la versión de Presto incluida en cada versión de lanzamiento de Amazon EMR, junto con los componentes instalados con la aplicación. Para ver las versiones de los componentes de cada versión, consulte la sección Versiones de los componentes en la versión correspondiente de [Versiones de Amazon EMR 7.x](emr-release-7x.md), [Versiones de lanzamiento de Amazon EMR 6.x](emr-release-6x.md) o [Versiones de lanzamiento de Amazon EMR 5.x](emr-release-5x.md).


**Información de la versión de Presto**  

| Etiqueta de versión de Amazon EMR | Versión de Presto | Componentes instalados con 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 | 