

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

**Important**  
Presto, la version précédente de Trino, est toujours disponible pour une utilisation avec Amazon EMR. Cependant, nous recommandons vivement d'utiliser Trino à l'avenir avec Amazon EMR. Notez également que Trino et Presto ne peuvent pas fonctionner simultanément sur le même cluster. Pour plus d'informations, consultez [Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-trino.html).

[Presto](https://aws.amazon.com/big-data/what-is-presto/) est un moteur de requête SQL rapide conçu pour exécuter des requêtes analytiques interactives sur des jeux de données volumineux provenant de plusieurs sources. Pour plus d'informations, consultez le [site web Presto](https://prestodb.io/). Presto est inclus dans Amazon EMR versions 5.0.0 et ultérieures. Les versions antérieures incluent Presto en tant qu'application d'environnement de test (sandbox). Pour de plus amples informations, veuillez consulter [Versions Amazon EMR 4.x](emr-release-4x.md). Les versions 6.1.0 et ultérieures d'Amazon EMR prennent en charge [Trino](https://trino.io/) en plus de Presto. Pour de plus amples informations, veuillez consulter [Installation de PrestoDB](emr-presto-considerations.md#emr-prestodb-prestosql).

Le tableau suivant répertorie la version de Presto incluse dans la dernière version d’Amazon EMR série 7.x, ainsi que les composants qu’Amazon EMR installe avec Presto.

Pour la version des composants installés avec Presto dans cette version, voir la [version 7.12.0](emr-7120-release.md) Versions des composants.


**Informations sur la version de Presto pour emr-7.12.0**  

| Étiquette de version Amazon EMR | Version Presto | Composants installés avec 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 | 

Le tableau suivant répertorie la version de Presto incluse dans la dernière version d'Amazon EMR série 6.x, ainsi que les composants qu'Amazon EMR installe avec Presto.

Pour connaître la version des composants installés avec Presto dans cette version, consultez les [versions des composants de la version 6.15.0](emr-6150-release.md).


**Informations sur la version Presto pour emr-6.15.0**  

| Étiquette de version Amazon EMR | Version Presto | Composants installés avec 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 | 

Le tableau suivant répertorie la version de Presto incluse dans la dernière version d'Amazon EMR série 5.x, ainsi que les composants qu'Amazon EMR installe avec Presto.

Pour la version des composants installés avec Presto dans cette version, voir la [version 5.36.2](emr-5362-release.md) Versions des composants.


**Informations sur la version Presto pour emr-5.36.2**  

| Étiquette de version Amazon EMR | Version Presto | Composants installés avec 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**
+ [Utilisation de Presto avec le catalogue de données AWS Glue](emr-presto-glue.md)
+ [Utilisation de S3 Select Pushdown avec Presto pour améliorer les performances](emr-presto-s3select.md)
+ [Ajout de connecteurs de base de données](presto-adding-db-connectors.md)
+ [Utilisation SSL/TLS et configuration de LDAPS avec Presto sur Amazon EMR](presto-ssl.md)
+ [Activation du mode strict Presto](presto-strict-mode.md)
+ [Gestion de la perte d'instances Spot dans Presto](presto-spot-loss.md)
+ [Utilisation du dimensionnement automatique de Presto avec désaffectation gracieuse](presto-graceful-autoscale.md)
+ [Considérations relatives à Presto sur Amazon EMR](emr-presto-considerations.md)
+ [Historique des versions de Presto](Presto-release-history.md)

# Utilisation de Presto avec le catalogue de données AWS Glue
<a name="emr-presto-glue"></a>

À l'aide des versions 5.10.0 et ultérieures d'Amazon EMR, vous pouvez spécifier le catalogue de données AWS Glue comme métastore Hive par défaut pour Presto. Cette configuration est recommandée si vous avez besoin d'un metastore persistant ou d'un metastore partagé par différents clusters, services, applications ou Comptes AWS.

AWS Glue est un service d'extraction, de transformation et de chargement (ETL) entièrement géré qui permet de classer vos données de manière simple et rentable, de les nettoyer, de les enrichir et de les déplacer de manière fiable entre différents magasins de données. Le catalogue de données AWS Glue fournit un référentiel de métadonnées unifié couvrant une variété de sources de données et de formats de données, s'intégrant à Amazon EMR ainsi qu'à Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena et à toute application compatible avec le métastore Apache Hive. AWS Les robots d'exploration Glue peuvent automatiquement déduire un schéma à partir des données sources dans Amazon S3 et stocker les métadonnées associées dans le catalogue de données. Pour plus d'informations sur le catalogue de données, consultez la section [Remplissage du catalogue de données AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) dans le *AWS Glue Developer Guide*.

Des frais distincts s'appliquent pour AWS Glue. Il existe un tarif mensuel pour le stockage et l'accès aux métadonnées du catalogue de données, un taux horaire facturé par minute pour les tâches AWS Glue ETL et le temps d'exécution des robots d'exploration, et un taux horaire facturé par minute pour chaque point de terminaison de développement provisionné. Le catalogue de données vous permet de stocker jusqu'à un million d'objets sans aucuns frais. Au-delà d'un million d'objets, des frais de 1 USD vous seront facturés tous les 100 000 objets. Dans le catalogue de données, sont considérés comme des objets une table, une partition ou une base de données. Pour de plus amples informations, consultez [Tarification Glue](https://aws.amazon.com/glue/pricing).

**Important**  
Si vous avez créé des tables à l'aide d'Amazon Athena ou d'Amazon Redshift Spectrum avant le 14 août 2017, les bases de données et les tables sont stockées dans un catalogue géré par Athena, distinct du catalogue de données Glue. AWS Pour intégrer Amazon EMR à ces tables, vous devez passer au catalogue de données AWS Glue. Pour plus d'informations, consultez la section [Mise à niveau vers le catalogue de données AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) dans le guide de l'*utilisateur Amazon Athena*.

## Spécifier le catalogue de données AWS Glue comme métastore
<a name="emr-presto-glue-configure"></a>

Vous pouvez spécifier le catalogue de données AWS Glue comme métastore à l'aide de l'API AWS Management Console AWS CLI, ou Amazon EMR. Lorsque vous utilisez la CLI ou l'API, vous utilisez la classification de configuration de Presto pour spécifier le catalogue de données. En outre, avec Amazon EMR 5.16.0 et versions ultérieures, vous pouvez utiliser la classification de configuration pour spécifier un catalogue de données dans un autre. Compte AWS Lorsque vous utilisez la console, vous pouvez spécifier le catalogue de données à l'aide des **Options avancées** ou des **Options rapides**.

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

**Pour spécifier AWS Glue Data Catalog comme métastore Hive avec la nouvelle console**

1. [Connectez-vous au et ouvrez la AWS Management Console console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. Sous **EMR sur EC2** dans le volet de navigation de gauche, choisissez **Clusters**, puis **Créer un cluster**.

1. Sous **Solution groupée d'application**, choisissez **Presto**.

1. Sous **Paramètres du catalogue de données AWS Glue**, cochez la case **Utiliser pour les métadonnées des tables Presto**.

1. Choisissez toutes les autres options qui s'appliquent à votre cluster. 

1. Pour lancer cluster, choisissez **Créer un cluster**.

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

**Pour spécifier le catalogue de données AWS Glue comme métastore Hive par défaut à l'aide du AWS CLI**

Pour des exemples de spécification des classifications de configuration suivantes lorsque vous créez un cluster, consultez [Configuration des applications](emr-configure-apps.md).

**Amazon EMR 5.16.0 et versions ultérieures**
+ Définissez la propriété `hive.metastore` sur `glue`, comme indiqué dans l'exemple JSON suivant.

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

  Pour spécifier un catalogue de données dans un autre Compte AWS, ajoutez la `hive.metastore.glue.catalogid` propriété comme indiqué dans l'exemple JSON suivant. Remplacez `acct-id` par le compte AWS du catalogue de données. L'utilisation d'un catalogue de données dans un autre Compte AWS n'est pas disponible avec Amazon EMR version 5.15.0 et antérieures.

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

  **Amazon EMR versions 5.10.0 à 5.15.0**

  Définissez la propriété `hive.metastore.glue.datacatalog.enabled` sur `true`, comme indiqué dans l'exemple JSON suivant :

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

  **Amazon EMR 6.1.0 et versions ultérieures utilisant PrestoSQL (Trino)**

  À partir de la version 6.1.0 d'EMR, PrestoSQL prend également en charge Glue comme métastore Hive par défaut. Utilisez la classification de configuration `prestosql-connector-hive` et définissez la propriété `hive.metastore` sur `glue`, comme indiqué dans l'exemple JSON suivant.

  Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez `prestosql-connector-hive` dans la classification de configuration suivante par `trino-connector-hive`.

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

Pour basculer les metastores sur un cluster de longue durée, vous pouvez définir manuellement ces valeurs selon les besoins de votre version en vous connectant au nœud maître, en modifiant les valeurs de propriété directement dans le fichier `/etc/presto/conf/catalog/hive.properties` et en redémarrant le serveur Presto (`sudo restart presto-server`). Si vous utilisez cette méthode sur les versions 5.15.0 et antérieures d'Amazon EMR, assurez-vous que `hive.table-statistics-enabled` soit défini sur `false`. Ce paramètre n'est pas obligatoire lorsque vous utilisez les versions 5.16.0 et ultérieures ; cependant, les statistiques de table et de partition ne sont pas prises en charge.

------

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

Le profil d'instance EC2 d'un cluster doit disposer des autorisations IAM pour les actions AWS Glue. En outre, si vous activez le chiffrement pour les objets AWS Glue Data Catalog, le rôle doit également être autorisé à chiffrer, déchiffrer et générer les objets AWS KMS key utilisés pour le chiffrement.

### Autorisations pour les actions AWS Glue
<a name="emr-hive-glue-permissions-actions"></a>

Aucune action n'est requise si vous utilisez le profil d'instance EC2 par défaut pour Amazon EMR. La politique `AmazonElasticMapReduceforEC2Role` gérée attachée au `EMR_EC2_DefaultRole` autorise toutes les actions AWS Glue nécessaires. Toutefois, si vous spécifiez un profil d'instance EC2 personnalisé et des autorisations, vous devez configurer les actions AWS Glue appropriées. Utilisez la stratégie gérée `AmazonElasticMapReduceforEC2Role` comme point de départ. Pour plus d'informations, consultez [Rôle de service pour les instances EC2 de cluster (profil d'instance EC2)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) dans le *Guide de gestion Amazon EMR*.

### Autorisations pour chiffrer et déchiffrer le catalogue de données Glue AWS
<a name="emr-hive-glue-permissions-encrypt"></a>

Votre profil d'instance a besoin d'autorisations pour chiffrer et déchiffrer les données au moyen de votre clé. Vous n'avez *pas* besoin de configurer ces autorisations si les deux déclarations suivantes s'appliquent :
+ Vous activez le chiffrement des objets du catalogue de données AWS Glue à l'aide de clés gérées pour AWS Glue.
+ Vous utilisez un cluster Compte AWS identique au AWS Glue Data Catalog.

Sinon, vous devez ajouter l'instruction suivante à la politique d'autorisations attachée à votre profil d'instance EC2. 

Pour plus d'informations sur le chiffrement du catalogue de données AWS Glue, consultez la section [Chiffrer votre catalogue de données](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) dans le *guide du développeur de AWS Glue*.

### Autorisations basées sur les ressources
<a name="emr-hive-glue-permissions-resource"></a>

Si vous utilisez AWS Glue conjointement avec Hive, Spark ou Presto dans Amazon EMR, AWS Glue prend en charge les politiques basées sur les ressources afin de contrôler l'accès aux ressources du catalogue de données. Ces ressources comprennent les bases de données, les tables, les connexions et les fonctions définies par l'utilisateur. Pour plus d'informations, consultez [Politiques de ressources AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) dans le *Guide du développeur AWS Glue*.

Lorsque vous utilisez des politiques basées sur les ressources pour limiter l'accès à AWS Glue depuis Amazon EMR, le principal que vous spécifiez dans la politique d'autorisation doit être l'ARN du rôle associé au profil d'instance EC2 spécifié lors de la création d'un cluster. Par exemple, pour une politique basée sur les ressources attachée à un catalogue, vous pouvez spécifier l'ARN du rôle de service par défaut pour les instances EC2 du cluster, *EMR\$1EC2\$1DefaultRole* en utilisant le `Principal` format illustré dans l'exemple suivant :

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

Il *acct-id* peut être différent de l'identifiant du compte AWS Glue. Cela permet d'accéder aux clusters EMR à partir de comptes différents. Vous pouvez spécifier plusieurs principaux, chacun provenant d'un compte différent.

## Considérations relatives à l'utilisation de AWS Glue Data Catalog
<a name="emr-presto-glue-knownissues"></a>

Tenez compte des éléments suivants lorsque vous utilisez AWS Glue Data Catalog comme métastore avec Presto :
+ Il n'est pas possible de renommer des tables depuis AWS Glue.
+ Lorsque vous créez une table Hive sans spécifier de `LOCATION`, les données de la table sont stockées à l'emplacement spécifié par la propriété `hive.metastore.warehouse.dir`. Par défaut, il s'agit d'un emplacement dans HDFS. Si un autre cluster doit accéder à la table, il échoue, sauf s'il dispose d'autorisations adéquates sur le cluster qui a créé la table. En outre, le stockage dans HDFS étant transitoire, si le cluster est résilié, les données de la table sont perdues et la table doit être recréée. Nous vous recommandons de spécifier un `LOCATION` dans Amazon S3 lorsque vous créez une table Hive à l'aide de AWS Glue. Vous pouvez également utiliser la classification de configuration `hive-site` pour spécifier un emplacement dans Amazon S3 pour `hive.metastore.warehouse.dir`, qui s'applique à toutes les tables Hive. Si une table est créée dans un emplacement HDFS et que le cluster qui l'a créée est toujours en cours d'exécution, vous pouvez mettre à jour l'emplacement de la table vers Amazon S3 depuis AWS Glue. Pour plus d'informations, consultez [Working with Tables on the AWS Glue Console](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) dans le *AWS Glue Developer Guide*. 
+ Les valeurs de partition contenant des guillemets et des apostrophes ne sont pas prises en charge, par exemple `PARTITION (owner="Doe's").`.
+ Les [statistiques sur les colonnes](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics) sont prises en charge à partir de la version emr-5.31.0.
+ L'utilisation de l'[autorisation Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization) n'est pas prise en charge. Comme alternative, envisagez d'utiliser les [politiques basées sur les ressources AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html). Pour plus d'informations, consultez [Utiliser des politiques basées sur les ressources pour Amazon EMR Access to Glue AWS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) Data Catalog.

# Utilisation de S3 Select Pushdown avec Presto pour améliorer les performances
<a name="emr-presto-s3select"></a>

**Important**  
Amazon S3 Select n’est plus disponible pour les nouveaux clients. Les clients existants d’Amazon S3 Select peuvent continuer à utiliser cette fonctionnalité comme d’habitude. [En savoir plus](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Avec la version 5.18.0 et ultérieure d'Amazon EMR, vous pouvez utiliser [S3 select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) Pushdown avec Presto sur Amazon EMR. Cette fonctionnalité permet à Presto de « pousser vers le bas » le travail de calcul d'opérations de projection (par exemple, `SELECT`) et les opérations de prédicat (par exemple, `WHERE`) sur Amazon S3. Cela autorise des requêtes à récupérer uniquement les données nécessaires d'Amazon S3 , ce qui peut améliorer les performances et réduire les quantités de données transférées entre Amazon EMR et Amazon S3 dans certaines applications.

## S3 Select Pushdown est-il adapté à mon application ?
<a name="emr-presto-s3select-apps"></a>

Nous vous recommandons de tester vos applications avec et sans S3 Select Pushdown pour voir si son utilisation peut être adaptée à votre application.

Utilisez les consignes suivantes pour déterminer si votre application peut utiliser S3 Select :
+ Votre requête exclut plus de la moitié de l'ensemble de données d'origine.
+ Vos prédicats de filtre de requête utilisent les colonnes qui ont un type de données pris en charge par Presto et S3 Select. Les types de données horodateur, réel et double ne sont pas pris en charge par S3 Select Pushdown. Nous recommandons d'utiliser le type de données décimal pour les données quantitatives. Pour plus d'informations sur les types de données pris en charge pour S3 Select, veuillez consulter Amazon Simple Storage Service, veuillez consulter [Types de données](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*.
+ Votre connexion réseau entre Amazon S3 et le cluster Amazon EMR a une bonne vitesse de transfert et une bande passante disponible. Amazon S3 ne compresse pas les réponses HTTP, de sorte que la taille de la réponse est susceptible d'augmenter pour les fichiers d'entrée compressés.

## Considérations et restrictions
<a name="emr-presto-s3select-considerations"></a>
+ Seuls les objets stockés en format CSV sont pris en charge. Les objets peuvent être décompressés ou facultativement compressés avec gzip ou bzip2.
+ La propriété `AllowQuotedRecordDelimiters` n'est pas prise en charge. Si cette propriété est spécifiée, la requête échoue.
+ Le chiffrement côté serveur d'Amazon S3 avec des clés de chiffrement fournies par le client (SSE-C) et le chiffrement côté client ne sont pas pris en charge. 
+ S3 Select Pushdown n'est pas un substitut pour l'utilisation de formats en colonne ou compressés tels qu'ORC ou Parquet.
+ Amazon S3 Select ne prend pas en charge les requêtes interrégionales pour Presto et Trino.

## Activation de S3 Select Pushdown avec PrestoDB ou Trino
<a name="emr-presto-s3select-specify"></a>

Pour autoriser S3 Select Pushdown pour PrestoDB sur Amazon EMR, utilisez la classification de configuration `presto-connector-hive` pour définir `hive.s3select-pushdown.enabled` sur `true`, tel qu'illustré dans l'exemple suivant. Pour de plus amples informations, veuillez consulter [Configuration des applications](emr-configure-apps.md). La valeur hive.s3select-pushdown.max-connections doit également être définie. Le paramètre `500` par défaut devrait être approprié pour la plupart des applications. Pour plus d’informations, consultez [Comprendre et régler hive.s3select-pushdown.max-connections](#emr-presto-s3select-max) ci-dessous.

Pour PrestoSQL sur EMR versions 6.1.0 à 6.3.0, remplacez `presto-connector-hive` dans l'exemple ci-dessous par `prestosql-connector-hive`.

Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez `presto-connector-hive` dans l'exemple ci-dessous par `trino-connector-hive`

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

### Comprendre et régler hive.s3select-pushdown.max-connections
<a name="emr-presto-s3select-max"></a>

Presto utilise EMRFS comme système de fichier par défaut. Le paramètre `fs.s3.maxConnections` dans la configuration de classification `emrfs-site` spécifie le nombre de connexions de client permissibles à Amazon S3 via EMRFS pour Presto. 500 par défaut. S3 Select Pushdown contourne EMRFS lorsqu'il accède à Amazon S3 pour les opérations de prédicats. Dans ce cas, la valeur de `hive.s3select-pushdown.max-connections` détermine le nombre maximal de connexions clients autorisées pour ces opérations de nœuds de travail. Cependant, toute demande à Amazon S3 initiée par Presto qui n'est pas poussée vers le bas (par exemple, les opérations GET) continue d'être régie par la valeur de `fs.s3.maxConnections`.

Si votre application fait l'expérience de l'erreur « Temporisation attente de connexion du groupe », augmentez la valeur de `hive.s3select-pushdown.max-connections` et de `fs.s3.maxConnections`.

# Ajout de connecteurs de base de données
<a name="presto-adding-db-connectors"></a>

Vous pouvez utilisez les classifications de configuration pour configurer les propriétés de connecteur JDBC lorsque vous créez un cluster. Les classifications de configuration commencent par `presto-connector`, par exemple `presto-connector-postgresql`. Les classifications de configuration disponibles dépendent de la version d'Amazon EMR. Pour les classifications de configuration disponibles avec la version la plus récente, consultez [5.36.2 classifications de configuration](emr-5362-release.md#emr-5362-class) Amazon EMR 5.36.2. Si vous utilisez une version différente d'Amazon EMR, consultez [Versions Amazon EMR 5.x](emr-release-5x.md) pour les classifications de configurations. Pour plus d'informations sur les propriétés qui peuvent être configurées avec chaque connecteur, consultez [https://prestodb.io/docs/current/connector.html](https://prestodb.io/docs/current/connector.html). 

**Example – Configuration d'un cluster avec le connecteur JDBC PostgreSQL**  
Pour lancer un cluster avec le connecteur PostgreSQL installé et configuré, créez d'abord un fichier JSON qui spécifie la classification de configuration (par exemple, `myConfig.json`) avec le contenu suivant, puis enregistrez-le localement.  
Remplacez les propriétés de connexion de manière adaptée à votre configuration, tel qu'illustré dans la rubrique [Connecteur PostgreSQL](https://prestodb.io/docs/current/connector/postgresql.html) de la Documentation Presto.  

```
[
  {
    "Classification": "presto-connector-postgresql",
    "Properties": {
      "connection-url": "jdbc:postgresql://example.net:5432/database",
      "connection-user": "MYUSER",
      "connection-password": "MYPASS"
    },
    "Configurations": []
  }
]
```
Lorsque vous créez le cluster, faites référence au chemin du fichier JSON qui utilise l'option `--configurations` affichée dans l'exemple suivant, où `myConfig.json` est dans le même répertoire où vous exécutez la commande :  

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

# Utilisation SSL/TLS et configuration de LDAPS avec Presto sur Amazon EMR
<a name="presto-ssl"></a>

Avec les versions 5.6.0 et ultérieures d'Amazon EMR, vous pouvez activer la [sécurisation des communications internes](https://prestodb.io/docs/current/security/internal-communication.html) entre les nœuds SSL/TLS Presto. Pour ce faire, vous devez définir une configuration de sécurité pour le chiffrement en transit. Pour plus d'informations, consultez les sections [Options de chiffrement](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) et [Utiliser les configurations de sécurité pour configurer la sécurité du cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) dans le *Guide de gestion Amazon EMR*.

Lorsque vous utilisez une configuration de sécurité avec le chiffrement en transit, Amazon EMR exécute les actions suivantes pour Presto :
+ Il distribue les artefacts de chiffrement, ou certificats, que vous spécifiez pour le chiffrement en transit sur l'ensemble du cluster Presto. Pour plus d'informations, consultez [Mise à disposition des certificats de chiffrement des données en transit](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates).
+ Il définit les propriétés suivantes à l'aide de la classification de configuration `presto-config`, qui correspond au fichier `config.properties` pour Presto :
  + Définit `http-server.http.enabled` sur `false` sur tous les nœuds, ce qui désactive HTTP en faveur de HTTPS. Cela nécessite que vous fournissiez des certificats qui fonctionnent pour le DNS public et privé lors de la configuration de sécurité pour le chiffrement en transit. Pour ce faire, vous pouvez utiliser des certificats SAN (Subject Alternative Name) qui prennent en charge plusieurs domaines.
  + Il définit les valeurs `http-server.https.*`. Pour plus de détails sur la configuration, consultez [Authentification LDAP](https://prestodb.io/docs/current/security/ldap.html) dans la documentation Presto.

De plus, avec les versions 5.10.0 et ultérieures d'Amazon EMR, vous pouvez configurer l'[authentification LDAP](https://prestodb.io/docs/current/security/ldap.html) pour les connexions client au coordinateur Presto à l'aide du protocole HTTPS. Cette configuration utilise LDAP sécurisé (LDAPS). TLS doit être activé sur votre serveur LDAP et le cluster Presto doit utiliser une configuration de sécurité avec le chiffrement des données en transit activé. Une configuration supplémentaire est requise. Les options de configuration sont différentes selon la version d'Amazon EMR que vous utilisez. Pour de plus amples informations, veuillez consulter [Utilisation de l'authentification LDAP pour Presto sur Amazon EMR](emr-presto-ldap.md).

Presto sur Amazon EMR utilise par défaut le port 8446 pour le HTTPS interne. Le port utilisé pour les communications internes doit être le même port que celui utilisé pour l'accès HTTPS client au coordinateur Presto. La propriété `http-server.https.port` dans la classification de configuration `presto-config` spécifie le port.

# Utilisation de l'authentification LDAP pour Presto sur Amazon EMR
<a name="emr-presto-ldap"></a>

Suivez les étapes de cette section pour configurer LDAP. Chaque étape contient des exemples et des liens vers des informations complémentaires.

**Topics**
+ [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq)
+ [Étape 2 : Définir une configuration de sécurité](#emr-presto-ldap-seccfg)
+ [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig)
+ [Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert)
+ [Étape 5 : Créer le cluster](#emr-presto-ldap-createcluster)

## Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

Dans la section suivante, vous aurez besoin des informations et des éléments suivants relatifs à votre serveur LDAP pour configurer l'authentification LDAP.

### L'adresse IP ou le nom d'hôte du serveur LDAP
<a name="w2aac60c39c13b7b5"></a>

Le coordinateur Presto sur le nœud principal Amazon EMR doit être en mesure d'atteindre le serveur LDAP via l'adresse IP ou le nom d'hôte spécifié. Par défaut, Presto communique avec le serveur LDAP via LDAPS sur le port 636. Si votre implémentation LDAP nécessite un port personnalisé, vous pouvez le spécifier à l'aide de la propriété `ldap.url` avec les versions 5.16.0 ou ultérieures d'Amazon EMR, ou en utilisant `authentication.ldap.url` avec les versions antérieures. Remplacez `636` par le port personnalisé comme illustré dans les exemples de configuration `presto-config` de [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig). Assurez-vous que les pare-feu et les groupes de sécurité autorisent le trafic entrant et sortant sur le port 636 (ou votre port personnalisé) ainsi que sur le port 8446 (ou votre port personnalisé), qui est utilisé pour les communications de cluster internes.

### Le certificat de serveur LDAP
<a name="w2aac60c39c13b7b7"></a>

Vous devez charger le fichier de certificat dans un emplacement sécurisé dans Amazon S3. Pour plus d'informations, consultez [Comment charger des fichiers ou des dossiers dans un compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*. Vous créez une action d'amorçage qui copie ce certificat depuis Amazon S3 vers chaque nœud du cluster lors du lancement du cluster. Dans [Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert). L'exemple de certificat est*s3://amzn-s3-demo-bucket/ldap\$1server.crt*.

### Les paramètres du serveur LDAP pour des liaisons anonymes
<a name="w2aac60c39c13b7b9"></a>

Si la liaison anonyme est désactivée sur PrestoDB, vous avez besoin de l'ID utilisateur (UID) et du mot de passe d'un compte disposant des autorisations pour établir la liaison avec le serveur LDAP afin que le serveur PrestoDB puisse établir une connexion. Vous spécifiez l'UID et le mot de passe en utilisant les propriétés `internal-communication.authentication.ldap.user` et `internal-communication.authentication.ldap.password` dans la classification de configuration `presto-config`. Amazon EMR 5.10.0 ne prend pas en charge ces paramètres ; la liaison anonyme doit donc être prise en charge sur le serveur LDAP lorsque vous utilisez cette version.

Notez que Trino ne nécessite pas la configuration de liaison anonyme.

**Pour obtenir le statut de liaison anonyme sur le serveur LDAP**
+ Utilisez la commande [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) à partir d'un client Linux, comme illustré dans l'exemple suivant :

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

  Si la liaison anonyme n'est pas autorisée, la commande renvoie les informations suivantes :

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

**Pour vérifier qu'un compte dispose des autorisations pour un serveur LDAP qui utilise l'authentification simple**
+ Utilisez la commande [ldapwhoami](https://linux.die.net/man/1/ldapwhoami) à partir d'un client Linux, comme illustré dans l'exemple suivant. L'exemple utilise un utilisateur fictif*presto*, stocké sur un serveur Open LDAP exécuté sur une instance EC2 avec le nom d'hôte fictif. *ip-xxx-xxx-xxx-xxx.ec2.internal* L'utilisateur est associé à l'unité organisationnelle (UO) *admins* et au mot de passe *123456* :

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

  Si le compte est valide et dispose des autorisations appropriées, la commande renvoie :

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

Les exemples de configuration dans [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig) incluent ce compte pour plus de clarté, à l'exception de l'exemple 5.10.0, dans lequel il n'est pas pris en charge. Si le serveur LDAP utilise une liaison anonyme, supprimez les `internal-communication.authentication.ldap.password` name/value paires `internal-communication.authentication.ldap.user` et.

### Le nom unique LDAP pour les utilisateurs Presto
<a name="w2aac60c39c13b7c11"></a>

Lorsque vous spécifiez la configuration LDAP pour Presto, vous spécifiez un modèle de liaison composé d'`${USER}`une unité organisationnelle (UO) et de composants de domaine supplémentaires (DCs). Presto remplace `${USER}` par l'UD utilisateur effectif (UID) de chaque utilisateur pendant l'authentification par mot de passe afin qu'il corresponde au nom unique spécifié par ce modèle de liaison. Vous avez besoin de OUs ceux auxquels appartiennent les utilisateurs éligibles et de leurs DCs. Par exemple, pour autoriser les utilisateurs de l'unité d'organisation `admins` ou du domaine `corp.example.com` à s'authentifier auprès de Presto, vous spécifiez `${USER},ou=admins,dc=corp,dc=example,dc=com` en tant que modèle de liaison utilisateur.

**Note**  
Lorsque vous l'utilisez AWS CloudFormation, vous devez utiliser la fonction Fn : :Sub afin de la `${USER}` remplacer par l'ID utilisateur (UID) réel. Pour plus d'informations, consultez la rubrique [Fn::Sub](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) dans le *Guide de l'utilisateur AWS CloudFormation *.

Lorsque vous utilisez Amazon EMR 5.10.0, vous ne pouvez spécifier qu'un seul modèle de ce type. Avec Amazon EMR 5.11.0 ou version ultérieure, vous pouvez spécifier plusieurs modèles séparés par un signe deux points (:). Les utilisateurs qui tentent de s'authentifier auprès de Presto sont comparés au premier modèle, puis au deuxième, et ainsi de suite. Pour obtenir un exemple, consultez [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig).

## Étape 2 : Définir une configuration de sécurité
<a name="emr-presto-ldap-seccfg"></a>

Créez une configuration de sécurité avec le chiffrement en transit activé. Pour plus d'informations, consultez [Création d'une configuration de sécurité](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) dans le *Guide de gestion d'Amazon EMR*. Les artefacts de chiffrement que vous fournissez lorsque vous configurez le chiffrement en transit sont utilisés pour chiffrer les communications internes entre les nœuds Presto. Pour plus d'informations, consultez [Mise à disposition des certificats de chiffrement des données en transit](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). Le certificat de serveur LDAP est utilisé pour authentifier les connexions client auprès du serveur Presto.

## Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto
<a name="emr-presto-ldap-prestoconfig"></a>

Vous utilisez la classification de configuration `presto-config` pour définir des propriétés Presto pour LDAP. Le format et le contenu de `presto-config` sont légèrement différents selon la version d'Amazon EMR et l'installation de Presto (PrestoDB ou Trino). Des exemples de configuration sont fournis plus tard dans cette section. Pour de plus amples informations, veuillez consulter [Configuration des applications](emr-configure-apps.md).

Les étapes suivantes supposent que vous enregistrez les données JSON dans un fichier*MyPrestoConfig.json*. Si vous utilisez la console, chargez le fichier dans un emplacement sécurisé dans Amazon S3 afin de pouvoir y faire référence lorsque vous créez le cluster. Si vous utilisez le AWS CLI, vous pouvez référencer le fichier localement.

**Example Amazon EMR 6.1.0 et versions ultérieures avec PrestoSQL (Trino)**  
L'exemple suivant utilise le nom d'hôte LDAP de [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq) pour s'authentifier auprès du serveur LDAP pour la liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs des unités d'organisation `admins` et `datascientists` sur le serveur LDAP sont éligibles pour l'authentification auprès du serveur Trino en tant qu'utilisateurs. Les modèles de liaison sont séparés par un signe deux-points (`:`).  
Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez *`prestosql-config`* dans la classification de configuration suivante par `trino-config` et `prestosql-password-authenticator` par `trino-password-authenticator`.  

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

**Example Amazon EMR 5.16.0 et versions ultérieures**  
L'exemple suivant utilise l'ID utilisateur et le mot de passe LDAP, ainsi que le nom d'hôte LDAP [Étape 1 : Collecter des informations sur votre serveur LDAP et copier le certificat du serveur sur Amazon S3](#emr-presto-ldap-server-prereq) pour l'authentification auprès du serveur LDAP pour la liaison. Deux modèles de liaison utilisateur sont spécifiés, ce qui indique que les utilisateurs des unités d'organisation `admins` et `datascientists` sur le serveur LDAP sont éligibles pour l'authentification auprès du serveur Presto en tant qu'utilisateurs. Les modèles de liaison sont séparés par un signe deux-points (`:`).  

```
[{
        "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 version 5.11.0 à 5.15.0**  
Le format de la classification de configuration `presto-config ` est légèrement différent pour ces versions. L'exemple suivant spécifie les mêmes paramètres que l'exemple précédent.  

```
[{
        "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 prend en charge la liaison anonyme uniquement ; ces entrées sont donc omises. De plus, un seul modèle de liaison peut être spécifié.  

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

## Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3
<a name="emr-presto-ldap-servercert"></a>

Créez un script qui copie le fichier de certificat sur chaque nœud du cluster et l'ajoute au keystore. Créez le script à l'aide d'un éditeur de texte, enregistrez-le, puis chargez-le dans Amazon S3. Dans[Étape 5 : Créer le cluster](#emr-presto-ldap-createcluster), le fichier de script est référencé sous la forme*s3://amzn-s3-demo-bucket/LoadLDAPCert.sh*.

L'exemple de script suivant utilise le mot de passe du keystore par défaut,*changeit*. Nous vous recommandons de vous connecter au nœud maître après avoir créé le cluster et de modifier le mot de passe du keystore à l'aide de la commande 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
```



## Étape 5 : Créer le cluster
<a name="emr-presto-ldap-createcluster"></a>

Lorsque vous créez le cluster, vous spécifiez Presto et les autres applications que vous voulez qu'Amazon EMR installe. Les exemples suivants font également référence aux propriétés de classification de configuration dans un fichier au format JSON, mais vous pouvez également spécifier la classification de configuration en ligne.

**Pour créer un cluster Presto avec authentification LDAP à l'aide de la console Amazon EMR.**

1. Accédez à la nouvelle console Amazon EMR et sélectionnez **Changer pour l'ancienne console** depuis le menu latéral. Pour plus d'informations sur ce qu'implique le passage à l'ancienne console, consultez la rubrique [Utilisation de l'ancienne console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Choisissez **Créer un cluster** et **Go to advanced options (Aller aux options avancées)**.

1. Choisissez **Presto** et les autres applications devant être installées par Amazon EMR, puis sous **Configuration logicielle**, sélectionnez la **version** d'Amazon EMR à utiliser. L'authentification LDAP est prise en charge uniquement avec Amazon EMR version 5.10.0 et ultérieure.

1. Sous **Modifier les paramètres logiciels**, choisissez **Charger JSON à partir de S3** , indiquez l'emplacement dans Amazon S3 du fichier de configuration JSON que vous avez créé dans [Étape 3 : Créer une configuration JSON avec des propriétés LDAP pour Presto](#emr-presto-ldap-prestoconfig), puis choisissez **Suivant**.

1. Configurez le matériel et la mise en réseau du cluster, puis choisissez **Next (Suivant)**.

1. Choisissez **Bootstrap Actions (Actions d'amorçage)**. Pour **Add bootstrap action (Ajouter une action d'amorçage)**, sélectionnez **Custom action (Action personnalisée)**, puis choisissez **Configure and add (Configurer et ajouter)**.

1. **Entrez un **nom** pour l'action bootstrap, entrez l'**emplacement du script** dans lequel vous l'avez créé[Étape 4 : Créer le script pour copier le certificat de serveur LDAP et le charger dans Amazon S3](#emr-presto-ldap-servercert), par exemple **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, puis choisissez Ajouter.**

1. Sous **General Options (Options générales)**, **Tags (Balises)** et **Additional Options (Options supplémentaires)**, choisissez les paramètres appropriés à votre application, puis choisissez **Next (Suivant)**.

1. Choisissez **Authentication and encryption (Authentification et chiffrement)**, puis sélectionnez la **configuration de sécurité** que vous avez créée dans [Étape 2 : Définir une configuration de sécurité](#emr-presto-ldap-seccfg).

1. Choisissez d'autres options de sécurité en fonction de votre application, puis choisissez **Create cluster (Créer le cluster)**.

**Pour créer un cluster Presto avec authentification LDAP à l'aide du AWS CLI**
+ Utilisez la commande `aws emr create-cluster`. Au minimum, spécifiez l'application Presto, ainsi que la classification de configuration Presto, le script d'amorçage et la configuration de sécurité que vous avez créée au cours des étapes précédentes. L'exemple suivant fait référence au fichier de configuration en tant que fichier JSON enregistré dans le même répertoire que celui où vous exécutez la commande. Le script d'amorçage, d'autre part, doit être enregistré dans Amazon S3. L’exemple suivant utilise `s3://amzn-s3-demo-bucket/LoadLDAPCert.sh`.
**Note**  
Les caractères de continuation de ligne Linux (\$1) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

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

# Activation du mode strict Presto
<a name="presto-strict-mode"></a>

Dans certaines situations, les requêtes de longue durée peuvent entraîner des coûts élevés et obliger Amazon EMR à utiliser davantage de ressources de cluster. Cela réduit les ressources des autres charges de travail du cluster. Avec les versions 6.8 et ultérieures d'Amazon EMR, vous pouvez utiliser une fonctionnalité de mode strict qui rejette ou vous avertit des types de requêtes de longue durée suivants :
+ Requêtes sans prédicats sur les colonnes partitionnées qui entraînent l'analyse de grandes quantités de données dans les tables
+ Requêtes avec jointures croisées entre deux grandes tables
+ Requêtes qui trient un grand nombre de lignes sans limite

Une fois que Presto a complètement optimisé le plan de requêtes, le mode strict s'exécute. Pour utiliser et personnaliser le mode strict en fonction des besoins de vos requêtes, vous pouvez configurer Presto de la manière suivante.


**Configurations Presto pour le mode strict**  

| Paramètre | Description | Par défaut | 
| --- | --- | --- | 
| strict-mode-enabled | Active et désactive le mode strict. La valeur de true indique que le mode strict est activé. | false | 
| strict-mode-fail-query | Rejette les requêtes si le mode strict détecte des requêtes probables de longue durée. Si false, Amazon EMR émet uniquement un avertissement.  | false | 
| strict-mode-restrictions | Spécifie les restrictions à appliquer lorsque le mode strict est activé. Le mode strict prend en charge les restrictions suivantes : MANDATORY\$1PARTITION\$1PREDICATE, DISALLOW\$1CROSS\$1JOIN et LIMITED\$1SORT. |  MANDATORY\$1PARTITION\$1PREDICATE, DISALLOW\$1CROSS\$1JOIN, LIMITED\$1SORT  | 

Pour tester le mode strict, vous pouvez remplacer ces configurations ou les définir comme propriétés de session lorsque vous utilisez le client Presto. 

**Pour définir la configuration lors de la création du cluster à l'aide du AWS Management Console**

1. Choisissez **Créer un cluster** et sélectionnez Amazon EMR version 6.8.0, puis Presto ou Trino. Pour plus d'informations, veuillez consulter [Installation de PrestoDB et Trino](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-considerations.html#emr-prestodb-prestosql). 

1. Spécifiez directement les propriétés de configuration pour le mode strict ou chargez un fichier JSON sur Amazon S3. Vous pouvez éventuellement sélectionner le catalogue de données AWS Glue pour votre metastore. Spécifiez votre VPC, vos sous-réseaux, vos actions d'amorçage, votre paire de clés et votre groupe de sécurité. Choisissez **Créer un cluster** pour créer votre cluster. 

1. Connectez-vous au nœud primaire du cluster et exécutez `presto-cli` ou `trino-cli`. 

1. Soumettez vos questions. Le mode strict valide chaque requête et détermine si elle est de longue durée. En fonction de vos paramètres `strict-mode-fail-query`, Amazon EMR rejette la requête ou émet un avertissement. 

1. Lorsque vous avez terminé vos requêtes, résiliez le cluster et supprimez vos ressources. 

**Pour définir la configuration sur un cluster en cours d'exécution à l'aide du AWS CLI**

1. Connectez-vous au nœud principal de votre cluster à l'aide du AWS CLI et exécutez `presto-cli` ou`trino-cli`.

1. Exécutez les commandes suivantes avec les valeurs souhaitées. 

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

## Considérations
<a name="presto-strict-mode-considerations"></a>

Lorsque vous utilisez le mode strict, tenez compte des éléments suivants : 
+ Dans certains cas, le mode strict peut rejeter les requêtes de courte durée qui ne consomment pas beaucoup de ressources. Par exemple, les requêtes sur de petites tables n'appliquent pas de filtrage dynamique et ne remplacent pas les jointures internes par des jointures croisées. Cela peut amener la requête à utiliser le prédicat de partition obligatoire ou à interdire la jointure croisée. Dans ce cas, le mode strict rejette la requête. 
+ Le contrôle du mode strict s'applique uniquement aux types de requêtes SELECT, INSERT, CREATE TABLE AS SELECT et EXPLAIN ANALYZE. 
+ Vous ne pouvez utiliser la restriction sur le prédicat de partition obligatoire qu'avec le connecteur Hive. 

# Gestion de la perte d'instances Spot dans Presto
<a name="presto-spot-loss"></a>

Avec les instances Spot d'Amazon EMR, vous pouvez exécuter des charges de travail de big data sur la capacité inutilisée d'Amazon EC2 à moindre coût. En échange de cette réduction des coûts, Amazon EC2 peut interrompre les instances Spot avec une notification de deux minutes. Lorsque vous résiliez un nœud, Presto peut prendre jusqu'à 10 minutes avant qu'il ne renvoie une erreur. Cela entraîne des retards inutiles dans les rapports d'erreur et les éventuelles nouvelles tentatives. La résiliation rapide est une fonctionnalité qui vous permet de contrôler la façon dont Presto gère les nœuds résiliés.

Le rôle du coordinateur Presto est de suivre tous les composants master en interrogeant régulièrement leur statut. Sans arrêt rapide, le coordinateur ne consulte pas le YARN NodeManager pour connaître l'état de chaque nœud. Cela peut entraîner une longue boucle de nouvelles tentatives avant l'échec de la requête. En cas de résiliation rapide, le coordinateur Presto consulte l'état du nœud NodeManager dès que le sondage ne parvient pas à atteindre l'hôte. S' NodeManager il s'avère que le nœud est inactif, Presto abandonne toute nouvelle tentative, échoue à la requête et renvoie une erreur. `NODE_DECOMMISSIONED`

L'ensemble de paramètres de configuration suivant vous permet de contrôler et de personnaliser le comportement de Presto en cas de résiliation du nœud.


**Configurations Presto pour la gestion des défaillances des nœuds**  

| Paramètre | Description | Par défaut | 
| --- | --- | --- | 
| query.remote-task.max-backoff-duration | Durée pendant laquelle le coordinateur continue de tenter de récupérer l'état de la tâche distante à partir des composants master. | 10 minutes | 
| query.remote-task.quick-terminate-node-failure |  Active la défaillance rapide du nœud si le coordinateur ne peut pas atteindre le nœud ou ne peut pas se connecter au travailleur qui s'exécute sur ce nœud. La valeur de `query.remote-task.terminate-on-connect-exception` détermine si le coordinateur doit atteindre le nœud ou se connecter au travailleur. Le nœud échoue à la requête et Amazon EMR le supprime de la liste des travailleurs disponibles. Dans ce cas, vous ne pouvez pas utiliser le nœud pour planifier de nouvelles requêtes. Lorsque vous définissez cette valeur sur `false`, Presto revient à son comportement précédent où le coordinateur Presto essaie à nouveau d'atteindre le nœud (pour `query.remote-task.max-backoff-duration`) avant de marquer le nœud comme indisponible et d'échouer à la requête en cours sur le nœud.  | true | 
| query.remote-task.terminate-on-connect-exception | Spécifie si Amazon EMR doit créer un nœud si l'hôte est accessible mais que le coordinateur ne parvient pas à se connecter au processus de travail de l'hôte. Lorsque vous définissez cette valeur sur true, vous activez l'échec rapide de la requête si l'hôte est inaccessible. | false | 

# Utilisation du dimensionnement automatique de Presto avec désaffectation gracieuse
<a name="presto-graceful-autoscale"></a>

Les versions 5.30.0 et ultérieures d'Amazon EMR incluent une fonctionnalité que vous pouvez utiliser pour définir une période de grâce pour certaines actions de dimensionnement. La période de grâce permet aux tâches Presto de continuer à s'exécuter avant que le nœud ne se résilie en raison d'une action de redimensionnement ou d'une demande de politique de dimensionnement automatique. Pour plus d'informations sur les règles de dimensionnement, consultez [Comprendre les règles de dimensionnement automatique](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html#emr-scaling-rules) dans le *Guide de gestion Amazon EMR*. Presto autoscaling avec la mise hors service gracieuse empêche la planification de nouvelles tâches sur un nœud en cours de mise hors service, tout en permettant aux tâches déjà en cours d'exécution de se terminer avant que le délai d'arrêt ne soit atteint. Les requêtes en cours d'exécution se termineront avant que le nœud soit désaffecté. Autoscaling n'est pas pris en charge sur les parcs d'instances.

Vous pouvez contrôler le délai d'exécution des tâches Presto après réception d'une demande d'arrêt automatique. Par défaut, le délai d'arrêt d'Amazon EMR est de `0` minutes, ce qui signifie qu'Amazon EMR résilie immédiatement le nœud et toutes les tâches Presto en cours d'exécution sur celui-ci, si une demande de mise à l'échelle l'exige. Pour définir un délai plus long pour les tâches Presto sur Amazon EMR afin de permettre aux requêtes en cours d'exécution de se terminer avant la réduction de capacité d'un cluster, utilisez la classification de configuration `presto-config` pour définir le paramètre `graceful-shutdown-timeout` sur une valeur (en secondes ou en minutes) supérieure à zéro. Pour de plus amples informations, veuillez consulter [Configuration des applications](emr-configure-apps.md).

Par exemple, l'augmentation de la valeur `graceful-shutdown-timeout` à `"30m"` spécifie un délai d'attente de 30 minutes. À la fin du délai d'arrêt, le nœud marqué pour la désaffectation fait l'objet d'un arrêt forcé s'il attend que des tâches de requête se terminent. Dans ce cas, la requête échoue. Si les tâches de requête se terminent au bout de cinq minutes, le nœud marqué pour la mise hors service est résilié au bout de cinq minutes, à condition que les autres applications YARN aient terminé leur exécution.

**Example Exemple de configuration de dimensionnement automatique Presto avec désaffectation gracieuse**  
Remplacez la valeur `graceful-shutdown-timeout` par le nombre de minutes approprié pour votre configuration. Il n'y a pas de valeur maximale. L'exemple ci-dessous définit une valeur de délai d'arrêt de `1800` secondes (30 minutes).  

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

**Limites**

La mise hors service gracieuse de PrestoDB ne fonctionne pas sur les clusters EMR où la connectivité HTTP est désactivée, par exemple quand `http-server.http.enabled` est défini sur `false`. Trino ne prend pas du tout en charge la mise hors service gracieuse, quel que soit le paramètre `http-server.http.enabled`.

# Considérations relatives à Presto sur Amazon EMR
<a name="emr-presto-considerations"></a>

Tenez compte limitations suivantes lors de l'exécution de [Presto](https://aws.amazon.com/big-data/what-is-presto/) sur Amazon EMR.

## Exécutable en ligne de commande Presto
<a name="emr-presto-command-line-cli"></a>

Dans Amazon EMR, PrestoDB et Trino utilisent tous deux le même exécutable en ligne de commande, `presto-cli`, comme dans l'exemple suivant.

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

## Propriétés de déploiement Presto non configurables
<a name="emr-presto-deployment-config"></a>

La version d'Amazon EMR que vous utilisez détermine les configurations de déploiement Presto disponibles. Pour plus d'informations sur ces propriétés de configuration, consultez la section [Déploiement de Presto](https://prestodb.io/docs/current/installation/deployment.html) dans la documentation de Presto. Le tableau suivant montre les différentes options de configuration pour les fichiers Presto `properties`.


| Fichier | Configurable | 
| --- | --- | 
|  `log.properties`  |  PrestoDB : configurable dans les versions 4.0.0 et ultérieures d'Amazon EMR. Utilisez la classification de configuration `presto-log`.  | 
|  `config.properties`  |  PrestoDB : configurable dans les versions 4.0.0 et ultérieures d'Amazon EMR. Utilisez la classification de configuration `presto-config`.  | 
|  `hive.properties`  |  PrestoDB : configurable dans les versions 4.1.0 et ultérieures d'Amazon EMR. Utilisez la classification de configuration `presto-connector-hive`.  | 
|  `node.properties`  |  PrestoDB : configurable dans les versions 5.6.0 et ultérieures d'Amazon EMR. Utilisez la classification de configuration `presto-node`.  | 
|  `jvm.config`  |  Non configurable.  | 

## Installation de PrestoDB
<a name="emr-prestodb-prestosql"></a>

Le nom de l'application *Presto* continue d'être utilisé pour installer PrestoDB sur des clusters. 

Vous pouvez installer PrestoDB ou Trino, mais vous ne pouvez pas installer les deux sur un seul cluster. Si vous spécifiez à la fois Prestodb et Trino lorsque vous tentez de créer un cluster, une erreur de validation se produit et la demande de création de cluster échoue.

## Configuration d'EMRFS et de PrestOS3 FileSystem
<a name="emr-presto-prestos3"></a>

Avec les versions 5.12.0 et ultérieures d'Amazon EMR, PrestoDB peut utiliser EMRFS. Pour plus d'informations, consultez [EMR File System (EMRFS)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs) dans le *Guide de gestion Amazon EMR*. Dans les versions antérieures d'Amazon EMR, PrestOS3 FileSystem est la seule option de configuration.

Vous pouvez utiliser une configuration de sécurité pour configurer le chiffrement des données EMRFS dans Amazon S3. Vous pouvez également utiliser les rôles IAM pour les demandes EMRFS à Amazon S3. Pour plus d'informations, consultez les sections [Comprendre les options de chiffrement](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) et [Configuration des rôles IAM pour les demandes EMRFS vers Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html) dans le *Guide de gestion Amazon EMR*.

**Note**  
Si vous interrogez des données sous-jacentes dans Amazon S3 avec Amazon EMR version 5.12.0, des erreurs Presto peuvent se produire. Cela est dû au fait que Presto ne parvient pas à récupérer les valeurs de classification de configuration depuis `emrfs-site.xml`. Pour contourner le problème, créez un sous-répertoire `emrfs` sous `usr/lib/presto/plugin/hive-hadoop2/` et un lien symbolique dans `usr/lib/presto/plugin/hive-hadoop2/emrfs` vers le fichier `/usr/share/aws/emr/emrfs/conf/emrfs-site.xml` existant. Redémarrez ensuite le processus presto-server (`sudo presto-server stop` suivi de `sudo presto-server start`). 

Vous pouvez remplacer la valeur par défaut d'EMRFS et utiliser PrestOS3 à la place. FileSystem Pour ce faire, utilisez la classification de configuration `presto-connector-hive` pour définir `hive.s3-file-system-type` sur `PRESTO` comme illustré dans l'exemple suivant. Pour de plus amples informations, veuillez consulter [Configuration des applications](emr-configure-apps.md).

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

Si vous utilisez PrestOS3FileSystem, utilisez la classification de `presto-connector-hive` configuration pour configurer les propriétés de PrestOS3. FileSystem Pour plus d'informations sur les propriétés disponibles, consultez [Configuration Amazon S3](https://prestodb.io/docs/current/connector/hive.html#amazon-s3-configuration) dans la section du connecteur Hive de la documentation Presto. Ces paramètres ne s'appliquent pas à EMRFS.

## Paramètre par défaut de l'emprunt d'identité de l'utilisateur final
<a name="emr-presto-end-user-impersonation"></a>

Par défaut, les versions 5.12.0 et ultérieures d'Amazon EMR activent l'emprunt d'identité de l'utilisateur final pour l'accès à HDFS. Pour plus d'informations, consultez [Emprunt de l'identité de l'utilisateur final](https://prestodb.io/docs/current/connector/hive-security.html#end-user-impersonation) dans la documentation Presto. Pour modifier ce paramètre avec la classification de configuration `presto-config`, définissez la propriété `hive.hdfs.impersonation.enabled` sur `false`.

## Port par défaut de l'interface Web Presto
<a name="emr-presto-default-web-port"></a>

Par défaut, Amazon EMR configure l'interface web Presto sur le coordinateur Presto pour utiliser le port 8889 (pour PrestoDB et Trino). Pour modifier le port, utilisez la classification de configuration `presto-config` pour définir la propriété `http-server.http.port`. Pour plus d'informations, consultez [Propriétés de configuration](https://prestodb.io/docs/current/installation/deployment.html#config-properties) dans la section *Déploiement de Presto* de la documentation Presto.

## Problème d'exécution du compartiment Hive dans certaines versions
<a name="emr-presto-bucket-execution"></a>

Presto version 152.3 connaît un problème lié à l'exécution de compartiment Hive qui entraîne des performances des requêtes Presto significativement plus lentes dans certaines circonstances. Les versions 5.0.3, 5.1.0 et 5.2.0 d'Amazon EMR incluent cette version de Presto. Pour atténuer ce problème, utilisez la classification de configuration `presto-connector-hive` pour définir la propriété `hive.bucket-execution` sur `false` tel qu'illustré dans l'exemple suivant.

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

# Historique des versions de Presto
<a name="Presto-release-history"></a>

Le tableau suivant répertorie la version de Presto incluse dans chaque version d'Amazon EMR, ainsi que les composants installés avec l'application. Pour connaître les versions des composants de chaque version, consultez la section Version des composants de votre version dans [Versions Amazon EMR 7.x](emr-release-7x.md), [Versions Amazon EMR 6.x](emr-release-6x.md) ou [Versions Amazon EMR 5.x](emr-release-5x.md).


**Informations sur la version de Presto**  

| Étiquette de version Amazon EMR | Version Presto | Composants installés avec 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 | 
| mr-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 | 