Configuration des applications lorsque vous créez un cluster - Amazon EMR

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.

Configuration des applications lorsque vous créez un cluster

Lorsque vous créez un cluster, vous pouvez remplacer les configurations par défaut pour les applications à l'aide de la console Amazon EMR, AWS Command Line Interface du AWS CLI() ou AWS du SDK.

Pour remplacer la configuration par défaut d'une application, vous devez spécifier des valeurs personnalisées dans une classification de configuration. Une classification de configuration correspond à un fichier XML de configuration pour une application, tel que hive-site.xml.

Les classifications de configuration varient selon la version d'Amazon EMR. Pour obtenir une liste des classifications de configuration disponibles dans une version spécifique, consultez la page des détails de la version. Par exemple, Amazon EMR version 6.4.0.

Fournir une configuration dans la console lorsque vous créez un cluster

Pour fournir une configuration, accédez à la page Créer un cluster et développez les paramètres du logiciel. Vous pouvez ensuite saisir la configuration directement à l'aide de JSON ou d’une syntaxe raccourcie présentée dans le texte ombré dans la console. Sinon, vous pouvez fournir un URI Amazon S3 pour un fichier avec un objet JSON Configurations.

Pour fournir une configuration pour un groupe d'instances, choisissez un cluster dans votre liste de clusters, puis cliquez sur l'onglet Configurations. Dans le tableau des configurations des groupes d'instances, choisissez le groupe d'instances à modifier, puis choisissez Reconfigurer.

Fournissez une configuration à l'aide du AWS CLI lorsque vous créez un cluster

Vous pouvez fournir une configuration à create-cluster en fournissant un chemin d'accès à un fichier JSON stocké localement ou dans Amazon S3. L'exemple suivant suppose que vous utilisiez les rôles par défaut pour Amazon EMR et que ces rôles ont été créés. Si vous devez créer les rôles, exécutez d'abord aws emr create-default-roles.

Si votre configuration se trouve dans votre répertoire local, vous pouvez utiliser l'exemple de commande suivant.

aws emr create-cluster --use-default-roles --release-label emr-7.1.0 --applications Name=Hive \ --instance-type m5.xlarge --instance-count 3 --configurations file://./configurations.json

Si votre configuration se trouve dans un chemin Amazon S3, vous devez configurer la solution de contournement suivante avant de transmettre le chemin Amazon S3 à la commande create-cluster.

#!/bin/sh # Assume the ConfigurationS3Path is not public, and its present in the same AWS account as the EMR cluster ConfigurationS3Path="s3://my-bucket/config.json" # Get a presigned HTTP URL for the s3Path ConfigurationURL=`aws s3 presign $ConfigurationS3Path --expires-in 300` # Fetch the presigned URL, and minify the JSON so that it spans only a single line Configurations=`curl $ConfigurationURL | jq -c .` aws emr create-cluster --use-default-roles --release-label emr-5.34.0 --instance-type m5.xlarge --instance-count 2 --applications Name=Hadoop Name=Spark --configurations $Configurations

Fournir une configuration à l'aide du kit SDK Java lors de la création d'un cluster

L'extrait de programme suivant montre comment fournir une configuration à l'aide de AWS SDK for Java.

Application hive = new Application().withName("Hive"); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration myHiveConfig = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Create cluster with ReleaseLabel") .withReleaseLabel("emr-5.20.0") .withApplications(hive) .withConfigurations(myHiveConfig) .withServiceRole("EMR_DefaultRole") .withJobFlowRole("EMR_EC2_DefaultRole") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myEc2Key") .withInstanceCount(3) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m4.large") .withSlaveInstanceType("m4.large") );