Exemples d’utilisation de l’AWS CLI avec Amazon EMR - AWS Command Line Interface

Exemples d’utilisation de l’AWS CLI avec Amazon EMR

Les exemples de code suivants montrent comment réaliser des actions et mettre en œuvre des scénarios courants en utilisant l’AWS Command Line Interface avec Amazon EMR.

Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous indiquent comment appeler des fonctions de service individuelles, vous pouvez les voir en contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la configuration et l’exécution du code en contexte.

Rubriques

Actions

L’exemple de code suivant montre comment utiliser add-instance-fleet.

AWS CLI

Pour ajouter une flotte d’instances de tâches à un cluster

Cet exemple ajoute une nouvelle flotte d’instances de tâches au cluster spécifié.

Commande :

aws emr add-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},InstanceTypeConfigs=['{InstanceType=m3.xlarge,BidPrice=0.5}']

Sortie :

{ "ClusterId": "j-12ABCDEFGHI34JK", "InstanceFleetId": "if-23ABCDEFGHI45JJ" }
  • Pour plus de détails sur l’API, consultez AddInstanceFleet dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser add-steps.

AWS CLI

1. Pour ajouter des étapes JAR personnalisées à un cluster

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3

Paramètres obligatoires :

Jar

Paramètres facultatifs :

Type, Name, ActionOnFailure, Args

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }

2. Pour ajouter des étapes Streaming à un cluster

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://amzn-s3-demo-bucket/wordcount/output]

Paramètres obligatoires :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Équivalent JSON (contenu du fichier step.json) :

[ { "Name": "JSON Streaming Step", "Args": ["-files","s3://elasticmapreduce/samples/wordcount/wordSplitter.py","-mapper","wordSplitter.py","-reducer","aggregate","-input","s3://elasticmapreduce/samples/wordcount/input","-output","s3://amzn-s3-demo-bucket/wordcount/output"], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]

REMARQUE : les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.

Commande (à l’aide du fichier step.json) :

aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./step.json

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }

3. Pour ajouter une étape Streaming contenant plusieurs fichiers à un cluster (JSON uniquement)

JSON (multiplefiles.json) :

[ { "Name": "JSON Streaming Step", "Type": "STREAMING", "ActionOnFailure": "CONTINUE", "Args": [ "-files", "s3://amzn-s3-demo-bucket/mapper.py,s3://amzn-s3-demo-bucket/reducer.py", "-mapper", "mapper.py", "-reducer", "reducer.py", "-input", "s3://amzn-s3-demo-bucket/input", "-output", "s3://amzn-s3-demo-bucket/output"] } ]

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./multiplefiles.json

Paramètres obligatoires :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Sortie :

{ "StepIds":[ "s-XXXXXXXX", ] }

4. Pour ajouter des étapes Hive à un cluster

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,Args=[-f,s3://amzn-s3-demo-bucket/myhivescript.q,-d,INPUT=s3://amzn-s3-demo-bucket/myhiveinput,-d,OUTPUT=s3://amzn-s3-demo-bucket/myhiveoutput,arg1,arg2] Type=HIVE,Name='Hive steps',ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs]

Paramètres obligatoires :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }

5. Pour ajouter des étapes Pig à un cluster

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://amzn-s3-demo-bucket/mypigscript.pig,-p,INPUT=s3://amzn-s3-demo-bucket/mypiginput,-p,OUTPUT=s3://amzn-s3-demo-bucket/mypigoutput,arg1,arg2] Type=PIG,Name='Pig program',Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://amzn-s3-demo-bucket/pig-apache/output,arg1,arg2]

Paramètres obligatoires :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }

6. Pour ajouter des étapes Impala à un cluster

Commande :

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=IMPALA,Name='Impala program',ActionOnFailure=CONTINUE,Args=--impala-script,s3://myimpala/input,--console-output-path,s3://myimpala/output

Paramètres obligatoires :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
  • Pour plus de détails sur l’API, consultez AddSteps dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser add-tags.

AWS CLI

1. Pour ajouter des balises à un cluster

Commande :

aws emr add-tags --resource-id j-xxxxxxx --tags name="John Doe" age=29 sex=male address="123 East NW Seattle"

Sortie :

None

2. Pour répertorier les balises d’un cluster

Commande :

aws emr describe-cluster --cluster-id j-XXXXXXYY --query Cluster.Tags

Sortie :

[ { "Value": "male", "Key": "sex" }, { "Value": "123 East NW Seattle", "Key": "address" }, { "Value": "John Doe", "Key": "name" }, { "Value": "29", "Key": "age" } ]
  • Pour plus de détails sur l’API, consultez AddTags dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-cluster-examples.

AWS CLI

La plupart des exemples suivants supposent que vous avez spécifié votre rôle de service Amazon EMR et votre profil d’instance Amazon EC2. Si vous ne l’avez pas encore fait, vous devez spécifier chaque rôle IAM requis ou utiliser le paramètre --use-default-roles lors de la création de votre cluster. Pour plus d’informations sur la spécification des rôles IAM, consultez Configuration des rôles de service IAM pour les autorisations Amazon EMR aux services et ressources AWS dans le Guide de gestion Amazon EMR.

Exemple 1 : pour créer un cluster

L’exemple create-cluster suivant crée un cluster EMR simple.

aws emr create-cluster \ --release-label emr-5.14.0 \ --instance-type m4.large \ --instance-count 2

Cette commande ne produit aucune sortie.

Exemple 2 : pour créer un cluster Amazon EMR avec les rôles ServiceRole et InstanceProfile par défaut

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise la configuration --instance-groups.

aws emr create-cluster \ --release-label emr-5.14.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Exemple 3 : pour créer un cluster Amazon EMR qui utilise une flotte d’instances

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise la configuration --instance-fleets, en spécifiant deux types d’instances pour chaque flotte et deux sous-réseaux EC2.

aws emr create-cluster \ --release-label emr-5.14.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m4.large}'] InstanceFleetType=CORE,TargetSpotCapacity=11,InstanceTypeConfigs=['{InstanceType=m4.large,BidPrice=0.5,WeightedCapacity=3}','{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}

Exemple 4 : pour créer un cluster avec des rôles par défaut

L’exemple create-cluster suivant utilise le paramètre --use-default-roles pour spécifier le rôle de service et le profil d’instance par défaut.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 5 : pour créer un cluster et spécifier les applications à installer

L’exemple create-cluster suivant utilise le paramètre --applications pour spécifier les applications installées par Amazon EMR. Cet exemple installe Hadoop, Hive et Pig.

aws emr create-cluster \ --applications Name=Hadoop Name=Hive Name=Pig \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 6 : pour créer un cluster incluant Spark

L’exemple suivant installe Spark.

aws emr create-cluster \ --release-label emr-5.9.0 \ --applications Name=Spark \ --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 7 : pour spécifier une AMI personnalisée à utiliser pour des instances de cluster

L’exemple create-cluster suivant crée une instance de cluster basée sur l’AMI Amazon Linux dont l’ID est ami-a518e6df.

aws emr create-cluster \ --name "Cluster with My Custom AMI" \ --custom-ami-id ami-a518e6df \ --ebs-root-volume-size 20 \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-count 2 \ --instance-type m4.large

Exemple 8 : pour personnaliser des configurations d’application

Les exemples suivants utilisent le paramètre --configurations pour spécifier un fichier de configuration JSON contenant des personnalisations d’application pour Hadoop. Pour plus d’informations, consultez Configuration des applications dans le Guide de version Amazon EMR.

Contenu de configurations.json :

[ { "Classification": "mapred-site", "Properties": { "mapred.tasktracker.map.tasks.maximum": 2 } }, { "Classification": "hadoop-env", "Properties": {}, "Configurations": [ { "Classification": "export", "Properties": { "HADOOP_DATANODE_HEAPSIZE": 2048, "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19" } } ] } ]

L’exemple suivant fait référence à configurations.json comme un fichier local.

aws emr create-cluster \ --configurations file://configurations.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

L’exemple suivant fait référence à configurations.json comme un fichier dans Amazon S3.

aws emr create-cluster \ --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/configurations.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 9 : pour créer un cluster avec des groupes d’instances maîtres, principaux et de tâches

L’exemple create-cluster suivant utilise --instance-groups afin de spécifier le type et le nombre d’instances EC2 à utiliser pour les groupes d’instances maîtres, principales et de tâches.

aws emr create-cluster \ --release-label emr-5.9.0 \ --instance-groups Name=Master,InstanceGroupType=MASTER,InstanceType=m4.large,InstanceCount=1 Name=Core,InstanceGroupType=CORE,InstanceType=m4.large,InstanceCount=2 Name=Task,InstanceGroupType=TASK,InstanceType=m4.large,InstanceCount=2

Exemple 10 : pour spécifier qu’un cluster doit être résilié une fois toutes les étapes terminées

L’exemple create-cluster suivant utilise --auto-terminate afin de spécifier que le cluster doit s’arrêter automatiquement une fois toutes les étapes terminées.

aws emr create-cluster \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 11 : pour spécifier les détails de configuration du cluster tels que la paire de clés Amazon EC2, la configuration réseau et les groupes de sécurité

L’exemple create-cluster suivant crée un cluster avec la paire de clés Amazon EC2 nommée myKey et un profil d’instance personnalisé nommé myProfile. Les paires de clés sont utilisées pour autoriser les connexions SSH aux nœuds du cluster, le plus souvent au nœud principal. Pour plus d’informations, consultez Utilisation d’une paire de clés Amazon EC2 pour les informations d’identification SSH dans le Guide de gestion Amazon EMR.

aws emr create-cluster \ --ec2-attributes KeyName=myKey,InstanceProfile=myProfile \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

L’exemple suivant crée un cluster dans un sous-réseau Amazon VPC.

aws emr create-cluster \ --ec2-attributes SubnetId=subnet-xxxxx \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

L’exemple suivant crée un cluster dans la zone de disponibilité us-east-1b.

aws emr create-cluster \ --ec2-attributes AvailabilityZone=us-east-1b \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple suivant crée un cluster et spécifie uniquement les groupes de sécurité gérés par Amazon EMR.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple suivant crée un cluster et spécifie uniquement des groupes de sécurité Amazon EC2 supplémentaires.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,AdditionalMasterSecurityGroups=[sg-addMaster1,sg-addMaster2,sg-addMaster3,sg-addMaster4],AdditionalSlaveSecurityGroups=[sg-addSlave1,sg-addSlave2,sg-addSlave3,sg-addSlave4] \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple suivant crée un cluster et spécifie les groupes de sécurité gérés par EMR, ainsi que des groupes de sécurité supplémentaires.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1,AdditionalMasterSecurityGroups=[sg-addMaster1,sg-addMaster2,sg-addMaster3,sg-addMaster4],AdditionalSlaveSecurityGroups=[sg-addSlave1,sg-addSlave2,sg-addSlave3,sg-addSlave4] \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple suivant crée un cluster dans un sous-réseau privé VPC et utilise un groupe de sécurité Amazon EC2 spécifique pour activer l’accès au service Amazon EMR, ce qui est obligatoire pour les clusters situés dans des sous-réseaux privés.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,ServiceAccessSecurityGroup=sg-service-access,EmrManagedMasterSecurityGroup=sg-master,EmrManagedSlaveSecurityGroup=sg-slave \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple suivant spécifie les paramètres de configuration du groupe de sécurité à l’aide d’un fichier JSON nommé ec2_attributes.json stocké localement. REMARQUE : les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes file://ec2_attributes.json \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Contenu de ec2_attributes.json :

[ { "SubnetId": "subnet-xxxxx", "KeyName": "myKey", "InstanceProfile":"myRole", "EmrManagedMasterSecurityGroup": "sg-master1", "EmrManagedSlaveSecurityGroup": "sg-slave1", "ServiceAccessSecurityGroup": "sg-service-access", "AdditionalMasterSecurityGroups": ["sg-addMaster1","sg-addMaster2","sg-addMaster3","sg-addMaster4"], "AdditionalSlaveSecurityGroups": ["sg-addSlave1","sg-addSlave2","sg-addSlave3","sg-addSlave4"] } ]

Exemple 12 : pour activer le débogage et spécifier l’URI d’un journal

L’exemple create-cluster suivant utilise le paramètre --enable-debugging, qui vous permet d’afficher les fichiers journaux plus facilement à l’aide de l’outil de débogage de la console Amazon EMR. Le paramètre --log-uri est obligatoire avec --enable-debugging.

aws emr create-cluster \ --enable-debugging \ --log-uri s3://amzn-s3-demo-bucket/myLog \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 13 : pour ajouter des balises lors de la création d’un cluster

Les balises sont des paires clé-valeur qui vous aident à identifier et à gérer les clusters. L’exemple create-cluster suivant utilise le paramètre --tags pour créer trois balises pour un cluster, une avec le nom de la clé name et la valeur Shirley Rodriguez, une seconde avec le nom de la clé age et la valeur 29, et une troisième balise avec le nom de la clé department et la valeur Analytics.

aws emr create-cluster \ --tags name="Shirley Rodriguez" age=29 department="Analytics" \ --release-label emr-5.32.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --use-default-roles

L’exemple suivant répertorie les balises appliquées à un cluster.

aws emr describe-cluster \ --cluster-id j-XXXXXXYY \ --query Cluster.Tags

Exemple 14 : pour utiliser une configuration de sécurité qui active le chiffrement et d’autres fonctionnalités de sécurité

L’exemple create-cluster suivant utilise le paramètre --security-configuration pour spécifier une configuration de sécurité pour un cluster EMR. Vous pouvez utiliser les configurations de sécurité avec Amazon EMR version 4.8.0 ou ultérieure.

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --security-configuration mySecurityConfiguration

Exemple 15 : pour créer un cluster avec des volumes de stockage EBS supplémentaires configurés pour les groupes d’instances

Lorsque vous spécifiez des volumes EBS supplémentaires, les arguments suivants sont obligatoires : VolumeType, SizeInGB si EbsBlockDeviceConfigs est spécifié.

L’exemple create-cluster suivant crée un cluster avec plusieurs volumes EBS attachés à des instances EC2 dans le groupe d’instances principal.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=d2.xlarge 'InstanceGroupType=CORE,InstanceCount=2,InstanceType=d2.xlarge,EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,SizeInGB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iops=100},VolumesPerInstance=4}]}' \ --auto-terminate

L’exemple suivant crée un cluster avec plusieurs volumes EBS attachés à des instances EC2 du groupe d’instances maître.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups 'InstanceGroupType=MASTER, InstanceCount=1, InstanceType=d2.xlarge, EbsConfiguration={EbsOptimized=true, EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=io1, SizeInGB=100, Iops=100}},{VolumeSpecification={VolumeType=standard,SizeInGB=50},VolumesPerInstance=3}]}' InstanceGroupType=CORE,InstanceCount=2,InstanceType=d2.xlarge \ --auto-terminate

Exemple 16 : pour créer un cluster avec une politique de mise à l’échelle automatique

Vous pouvez associer des politiques de mise à l’échelle automatique aux groupes d’instances principaux et aux groupes d’instances de tâches à l’aide d’Amazon EMR version 4.0 et ultérieure. La politique de mise à l’échelle automatique ajoute et supprime dynamiquement des instances EC2 en réponse à une métrique Amazon CloudWatch. Pour plus d’informations, consultez Utilisation de la mise à l’échelle automatique dans Amazon EMR <https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html> dans le Guide de gestion Amazon EMR.

Lorsque vous associez une politique de mise à l’échelle automatique, vous devez également spécifier le rôle par défaut pour la mise à l’échelle automatique à l’aide d’--auto-scaling-role EMR_AutoScaling_DefaultRole.

L’exemple create-cluster suivant spécifie la politique de mise à l’échelle automatique pour le groupe d’instances CORE à l’aide de l’argument AutoScalingPolicy avec une structure JSON intégrée, qui spécifie la configuration de la politique de mise à l’échelle. Les groupes d’instances dotés d’une structure JSON intégrée doivent avoir tous les arguments entre guillemets simples. L’utilisation de guillemets simples est facultative pour les groupes d’instances sans structure JSON intégrée.

aws emr create-cluster --release-label emr-5.9.0 \ --use-default-roles --auto-scaling-role EMR_AutoScaling_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceType=d2.xlarge,InstanceCount=1 'InstanceGroupType=CORE,InstanceType=d2.xlarge,InstanceCount=2,AutoScalingPolicy={Constraints={MinCapacity=1,MaxCapacity=5},Rules=[{Name=TestRule,Description=TestDescription,Action={Market=ON_DEMAND,SimpleScalingPolicyConfiguration={AdjustmentType=EXACT_CAPACITY,ScalingAdjustment=2}},Trigger={CloudWatchAlarmDefinition={ComparisonOperator=GREATER_THAN,EvaluationPeriods=5,MetricName=TestMetric,Namespace=EMR,Period=3,Statistic=MAXIMUM,Threshold=4.5,Unit=NONE,Dimensions=[{Key=TestKey,Value=TestValue}]}}}]}'

L’exemple suivant utilise le fichier JSON instancegroupconfig.json pour spécifier la configuration de tous les groupes d’instances d’un cluster. Le fichier JSON spécifie la configuration de la politique de mise à l’échelle automatique pour le groupe d’instances principal.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups file://myfolder/instancegroupconfig.json \ --auto-scaling-role EMR_AutoScaling_DefaultRole

Contenu de instancegroupconfig.json :

[ { "InstanceCount": 1, "Name": "MyMasterIG", "InstanceGroupType": "MASTER", "InstanceType": "m4.large" }, { "InstanceCount": 2, "Name": "MyCoreIG", "InstanceGroupType": "CORE", "InstanceType": "m4.large", "AutoScalingPolicy": { "Constraints": { "MinCapacity": 2, "MaxCapacity": 10 }, "Rules": [ { "Name": "Default-scale-out", "Description": "Replicates the default scale-out rule in the console for YARN memory.", "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "LESS_THAN", "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Threshold": 15, "Statistic": "AVERAGE", "Unit": "PERCENT", "Dimensions": [ { "Key": "JobFlowId", "Value": "${emr.clusterId}" } ] } } } ] } } ]

Exemple 17 : pour ajouter des étapes JAR personnalisées lors de la création d’un cluster

L’exemple create-cluster suivant ajoute des étapes en spécifiant un fichier JAR stocké dans Amazon S3. Étapes pour soumettre du travail à un cluster La fonction principale définie dans le fichier JAR s’exécute après que les instances EC2 sont provisionnées, que toutes les actions d’amorçage sont exécutées et que les applications sont installées. Les étapes sont spécifiées à l’aide de Type=CUSTOM_JAR.

Les étapes JAR personnalisées nécessitent le paramètre Jar=, qui spécifie le chemin et le nom de fichier JAR. Les paramètres facultatifs sont Type, Name, ActionOnFailure, Args et MainClass. Si la classe principale n’est pas spécifiée, le fichier JAR doit spécifier Main-Class dans son fichier manifeste.

aws emr create-cluster \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3 \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 18 : pour ajouter des étapes de streaming lors de la création d’un cluster

Les exemples create-cluster suivants ajoutent une étape de streaming à un cluster qui se résilie une fois toutes les étapes exécutées. Les étapes de streaming nécessitent des paramètres Type et Args. Les paramètres facultatifs des étapes de streaming sont Name et ActionOnFailure.

L’exemple suivant spécifie l’étape en ligne.

aws emr create-cluster \ --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://amzn-s3-demo-bucket/wordcount/output] \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

L’exemple suivant utilise un fichier de configuration JSON stocké localement nommé multiplefiles.json. La configuration JSON spécifie plusieurs fichiers. Pour spécifier plusieurs fichiers au cours d’une étape, vous devez utiliser un fichier de configuration JSON afin de définir l’étape. Les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.

aws emr create-cluster \ --steps file://./multiplefiles.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Contenu de multiplefiles.json :

[ { "Name": "JSON Streaming Step", "Args": [ "-files", "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "-mapper", "wordSplitter.py", "-reducer", "aggregate", "-input", "s3://elasticmapreduce/samples/wordcount/input", "-output", "s3://amzn-s3-demo-bucket/wordcount/output" ], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]

Exemple 19 : pour ajouter des étapes Hive lors de la création d’un cluster

L’exemple suivant ajoute des étapes Hive lors de la création d’un cluster. Les étapes Hive nécessitent des paramètres Type et Args. Les paramètres facultatifs des étapes Hive sont Name et ActionOnFailure.

aws emr create-cluster \ --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs] \ --applications Name=Hive \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Exemple 20 : pour ajouter des étapes Pig lors de la création d’un cluster

L’exemple suivant ajoute des étapes Pig lors de la création d’un cluster. Les paramètres obligatoires pour les étapes Pig sont Type et Args. Les paramètres facultatifs des étapes Pig sont Name et ActionOnFailure.

aws emr create-cluster \ --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://amzn-s3-demo-bucket/pig-apache/output] \ --applications Name=Pig \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Exemple 21 : pour ajouter des actions d’amorçage

L’exemple create-cluster suivant exécute deux actions d’amorçage définies comme des scripts stockés dans Amazon S3.

aws emr create-cluster \ --bootstrap-actions Path=s3://amzn-s3-demo-bucket/myscript1,Name=BootstrapAction1,Args=[arg1,arg2] Path=s3://amzn-s3-demo-bucket/myscript2,Name=BootstrapAction2,Args=[arg1,arg2] \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Exemple 22 : pour activer la vue cohérente EMRFS et personnaliser les paramètres RetryCount et RetryPeriod

L’exemple create-cluster suivant indique le nombre de nouvelles tentatives et leur durée pour une vue cohérente EMRFS. L’argument Consistent=true est obligatoire.

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --emrfs Consistent=true,RetryCount=6,RetryPeriod=30

L’exemple suivant spécifie la même configuration EMRFS que l’exemple précédent, à l’aide d’un fichier de configuration JSON stocké localement nommé emrfsconfig.json.

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --emrfs file://emrfsconfig.json

Contenu de emrfsconfig.json :

{ "Consistent": true, "RetryCount": 6, "RetryPeriod": 30 }

Exemple 23 : pour créer un cluster avec Kerberos configuré

Les exemples create-cluster suivants créent un cluster à l’aide d’une configuration de sécurité avec Kerberos activé et établissent les paramètres Kerberos pour le cluster avec --kerberos-attributes.

La commande suivante spécifie les attributs Kerberos du cluster en ligne.

aws emr create-cluster \ --instance-type m3.xlarge \ --release-label emr-5.10.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --security-configuration mySecurityConfiguration \ --kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=123,CrossRealmTrustPrincipalPassword=123

La commande suivante spécifie les mêmes attributs, mais fait référence à un fichier JSON stocké localement nommé kerberos_attributes.json. Dans cet exemple, le fichier est enregistré dans le même répertoire où vous exécutez la commande. Vous pouvez également faire référence à un fichier de configuration enregistré dans Amazon S3.

aws emr create-cluster \ --instance-type m3.xlarge \ --release-label emr-5.10.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --security-configuration mySecurityConfiguration \ --kerberos-attributes file://kerberos_attributes.json

Contenu de kerberos_attributes.json :

{ "Realm": "EC2.INTERNAL", "KdcAdminPassword": "123", "CrossRealmTrustPrincipalPassword": "123", }

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise la configuration --instance-groups et dispose d’une politique de mise à l’échelle gérée.

aws emr create-cluster \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large --managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=2,MaximumCapacityUnits=4,UnitType=Instances}'

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise le paramètre « --log-encryption-kms-key-id » pour définir l’ID de clé KMS utilisé pour le chiffrement des journaux.

aws emr create-cluster \ --release-label emr-5.30.0 \ --log-uri s3://amzn-s3-demo-bucket/myLog \ --log-encryption-kms-key-id arn:aws:kms:us-east-1:110302272565:key/dd559181-283e-45d7-99d1-66da348c4d33 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise la configuration « --placement-group-configs » pour placer des nœuds principaux dans un cluster à haute disponibilité (HA) au sein d’un groupe de placement EC2 à l’aide d’une stratégie de placement SPREAD.

aws emr create-cluster \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=3,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large \ --placement-group-configs InstanceRole=MASTER

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise la configuration « --auto-termination-policy » pour définir un seuil d’inactivité automatique pour le cluster.

aws emr create-cluster \ --release-label emr-5.34.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large \ --auto-termination-policy IdleTimeout=100

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise le « --os-release-label » pour définir une version d’Amazon Linux pour le lancement du cluster.

aws emr create-cluster \ --release-label emr-6.6.0 \ --os-release-label 2.0.20220406.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large

Exemple 24 : pour spécifier les attributs d’un volume racine EBS (taille, E/S par seconde et débit) pour les instances de cluster créées avec la version 6.15.0 et ultérieure d’EMR

L’exemple create-cluster suivant crée un cluster Amazon EMR qui utilise les attributs du volume racine pour configurer les spécifications des volumes racines pour les instances EC2.

aws emr create-cluster \ --name "Cluster with My Custom AMI" \ --custom-ami-id ami-a518e6df \ --ebs-root-volume-size 20 \ --ebs-root-volume-iops 3000 \ --ebs-root-volume-throughput 125 \ --release-label emr-6.15.0 \ --use-default-roles \ --instance-count 2 \ --instance-type m4.large
  • Pour plus de détails sur l’API, consultez CreateClusterExamples dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-default-roles.

AWS CLI

1. Pour créer le rôle IAM par défaut pour EC2

Commande :

aws emr create-default-roles

Sortie :

If the role already exists then the command returns nothing. If the role does not exist then the output will be: [ { "RolePolicy": { "Version":"2012-10-17", "Statement": [ { "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSteps", "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:MergeShards", "kinesis:PutRecord", "kinesis:SplitShard", "rds:Describe*", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version":"2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROAIQ5SIQUGL5KMYBJX6", "CreateDate": "2015-06-09T17:09:04.602Z", "RoleName": "EMR_EC2_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_EC2_DefaultRole" } }, { "RolePolicy": { "Version":"2012-10-17", "Statement": [ { "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeKeyPairs", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RunInstances", "ec2:TerminateInstances", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRolePolicies", "iam:PassRole", "s3:CreateBucket", "s3:Get*", "s3:List*", "sdb:BatchPutAttributes", "sdb:Select", "sqs:CreateQueue", "sqs:Delete*", "sqs:GetQueue*", "sqs:ReceiveMessage" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version":"2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" } } ] }, "RoleId": "AROAI3SRVPPVSRDLARBPY", "CreateDate": "2015-06-09T17:09:10.401Z", "RoleName": "EMR_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_DefaultRole" } } ]
  • Pour plus de détails sur l’API, consultez CreateDefaultRoles dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-security-configuration.

AWS CLI

1. Pour créer une configuration de sécurité avec le chiffrement en transit activé avec PEM pour le fournisseur de certificats, et le chiffrement au repos activé avec SSE-S3 pour le chiffrement S3 et AWS-KMS pour le fournisseur de clé de disque local

Commande :

aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : true, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-S3" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'

Sortie :

{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }

Équivalent JSON (contenu de security_configuration.json) :

{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-S3" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }

Commande (avec security_configuration.json) :

aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json

Sortie :

{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }

2. Pour créer une configuration de sécurité avec Kerberos activé à l’aide d’un KDC dédié au cluster et d’une confiance entre domaines

Commande :

aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'

Sortie :

{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }

Équivalent JSON (contenu de security_configuration.json) :

{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }

Commande (avec security_configuration.json) :

aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json

Sortie :

{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }

L’exemple de code suivant montre comment utiliser delete-security-configuration.

AWS CLI

Pour supprimer une configuration de sécurité dans la région actuelle

Commande :

aws emr delete-security-configuration --name MySecurityConfig

Sortie :

None

L’exemple de code suivant montre comment utiliser describe-cluster.

AWS CLI

Commande :

aws emr describe-cluster --cluster-id j-XXXXXXXX

Sortie :

For release-label based uniform instance groups cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1436475075.199, "CreationDateTime": 1436474656.563, }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "ServiceAccessSecurityGroup": "sg-xxxxxxxx", "EmrManagedMasterSecurityGroup": "sg-xxxxxxxx", "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2KeyName": "myKey", "Ec2AvailabilityZone": "us-east-1c", "EmrManagedSlaveSecurityGroup": "sg-yyyyyyyyy" }, "Name": "My Cluster", "ServiceRole": "EMR_DefaultRole", "Tags": [], "TerminationProtected": true, "UnhealthyNodeReplacement": true, "ReleaseLabel": "emr-4.0.0", "NormalizedInstanceHours": 96, "InstanceGroups": [ { "RequestedInstanceCount": 2, "Status": { "Timeline": { "ReadyDateTime": 1436475074.245, "CreationDateTime": 1436474656.564, "EndDateTime": 1436638158.387 }, "State": "RUNNING", "StateChangeReason": { "Message": "", } }, "Name": "CORE", "InstanceGroupType": "CORE", "Id": "ig-YYYYYYY", "Configurations": [], "InstanceType": "m3.large", "Market": "ON_DEMAND", "RunningInstanceCount": 2 }, { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1436475074.245, "CreationDateTime": 1436474656.564, "EndDateTime": 1436638158.387 }, "State": "RUNNING", "StateChangeReason": { "Message": "", } }, "Name": "MASTER", "InstanceGroupType": "MASTER", "Id": "ig-XXXXXXXXX", "Configurations": [], "InstanceType": "m3.large", "Market": "ON_DEMAND", "RunningInstanceCount": 1 } ], "Applications": [ { "Name": "Hadoop" } ], "VisibleToAllUsers": true, "BootstrapActions": [], "MasterPublicDnsName": "ec2-54-147-144-78.compute-1.amazonaws.com", "AutoTerminate": false, "Id": "j-XXXXXXXX", "Configurations": [ { "Properties": { "fs.s3.consistent.retryPeriodSeconds": "20", "fs.s3.enableServerSideEncryption": "true", "fs.s3.consistent": "false", "fs.s3.consistent.retryCount": "2" }, "Classification": "emrfs-site" } ] } } For release-label based instance fleet cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1487897289.705, "CreationDateTime": 1487896933.942 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "EmrManagedMasterSecurityGroup": "sg-xxxxx", "RequestedEc2AvailabilityZones": [], "RequestedEc2SubnetIds": [], "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2AvailabilityZone": "us-east-1a", "EmrManagedSlaveSecurityGroup": "sg-xxxxx" }, "Name": "My Cluster", "ServiceRole": "EMR_DefaultRole", "Tags": [], "TerminationProtected": false, "UnhealthyNodeReplacement": false, "ReleaseLabel": "emr-5.2.0", "NormalizedInstanceHours": 472, "InstanceCollectionType": "INSTANCE_FLEET", "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1487897212.74, "CreationDateTime": 1487896933.948 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 1, "Name": "MASTER", "InstanceFleetType": "MASTER", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "TargetSpotCapacity": 1, "ProvisionedOnDemandCapacity": 0, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-xxxxxxx", "TargetOnDemandCapacity": 0 } ], "Applications": [ { "Version": "2.7.3", "Name": "Hadoop" } ], "ScaleDownBehavior": "TERMINATE_AT_INSTANCE_HOUR", "VisibleToAllUsers": true, "BootstrapActions": [], "MasterPublicDnsName": "ec2-xxx-xx-xxx-xx.compute-1.amazonaws.com", "AutoTerminate": false, "Id": "j-xxxxx", "Configurations": [] } } For ami based uniform instance group cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1399400564.432, "CreationDateTime": 1399400268.62 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2AvailabilityZone": "us-east-1c" }, "Name": "My Cluster", "Tags": [], "TerminationProtected": true, "UnhealthyNodeReplacement": true, "RunningAmiVersion": "2.5.4", "InstanceGroups": [ { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1399400558.848, "CreationDateTime": 1399400268.621 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "Master instance group", "InstanceGroupType": "MASTER", "InstanceType": "m1.small", "Id": "ig-ABCD", "Market": "ON_DEMAND", "RunningInstanceCount": 1 }, { "RequestedInstanceCount": 2, "Status": { "Timeline": { "ReadyDateTime": 1399400564.439, "CreationDateTime": 1399400268.621 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "Core instance group", "InstanceGroupType": "CORE", "InstanceType": "m1.small", "Id": "ig-DEF", "Market": "ON_DEMAND", "RunningInstanceCount": 2 } ], "Applications": [ { "Version": "1.0.3", "Name": "hadoop" } ], "BootstrapActions": [], "VisibleToAllUsers": false, "RequestedAmiVersion": "2.4.2", "LogUri": "s3://myLogUri/", "AutoTerminate": false, "Id": "j-XXXXXXXX" } }
  • Pour plus de détails sur l’API, consultez DescribeCluster dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-step.

AWS CLI

La commande suivante décrit l’étape dotée de l’ID s-3LZC0QUT43AM dans le cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr describe-step --cluster-id j-3SD91U2E1L2QX --step-id s-3LZC0QUT43AM

Sortie :

{ "Step": { "Status": { "Timeline": { "EndDateTime": 1433200470.481, "CreationDateTime": 1433199926.597, "StartDateTime": 1433200404.959 }, "State": "COMPLETED", "StateChangeReason": {} }, "Config": { "Args": [ "s3://us-west-2.elasticmapreduce/libs/hive/hive-script", "--base-path", "s3://us-west-2.elasticmapreduce/libs/hive/", "--install-hive", "--hive-versions", "0.13.1" ], "Jar": "s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar", "Properties": {} }, "Id": "s-3LZC0QUT43AM", "ActionOnFailure": "TERMINATE_CLUSTER", "Name": "Setup hive" } }
  • Pour plus de détails sur l’API, consultez DescribeStep dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get.

AWS CLI

Ce qui suit télécharge l’archive hadoop-examples.jar depuis l’instance principale dans le cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr get --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem --src /home/hadoop-examples.jar --dest ~
  • Pour plus de détails sur l’API, consultez Get dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-clusters.

AWS CLI

La commande suivante répertorie tous les clusters EMR actifs dans la région actuelle :

aws emr list-clusters --active

Sortie :

{ "Clusters": [ { "Status": { "Timeline": { "ReadyDateTime": 1433200405.353, "CreationDateTime": 1433199926.596 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 6, "Id": "j-3SD91U2E1L2QX", "Name": "my-cluster" } ] }
  • Pour plus de détails sur l’API, consultez ListClusters dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-instance-fleets.

AWS CLI

Pour obtenir les détails de configuration des flottes d’instances dans un cluster

Cet exemple répertorie les détails des flottes d’instances dans le cluster spécifié.

Commande :

list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'

Sortie :

{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }
  • Pour plus de détails sur l’API, consultez ListInstanceFleets dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-instances.

AWS CLI

La commande suivante répertorie toutes les instances du cluster doté de l’ID j-3C6XNQ39VR9WL :

aws emr list-instances --cluster-id j-3C6XNQ39VR9WL

Sortie :

For a uniform instance group based cluster { "Instances": [ { "Status": { "Timeline": { "ReadyDateTime": 1433200400.03, "CreationDateTime": 1433199960.152 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-f19ecfee", "PublicDnsName": "ec2-52-52-41-150.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-21-11-216.us-west-2.compute.internal", "PublicIpAddress": "52.52.41.150", "Id": "ci-3NNHQUQ2TWB6Y", "PrivateIpAddress": "172.21.11.216" }, { "Status": { "Timeline": { "ReadyDateTime": 1433200400.031, "CreationDateTime": 1433199949.102 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-1feee4c2", "PublicDnsName": "ec2-52-63-246-32.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-31-24-130.us-west-2.compute.internal", "PublicIpAddress": "52.63.246.32", "Id": "ci-GAOCMKNKDCV7", "PrivateIpAddress": "172.21.11.215" }, { "Status": { "Timeline": { "ReadyDateTime": 1433200400.031, "CreationDateTime": 1433199949.102 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-15cfeee3", "PublicDnsName": "ec2-52-25-246-63.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-31-24-129.us-west-2.compute.internal", "PublicIpAddress": "52.25.246.63", "Id": "ci-2W3TDFFB47UAD", "PrivateIpAddress": "172.21.11.214" } ] } For a fleet based cluster: { "Instances": [ { "Status": { "Timeline": { "ReadyDateTime": 1487810810.878, "CreationDateTime": 1487810588.367, "EndDateTime": 1488022990.924 }, "State": "TERMINATED", "StateChangeReason": { "Message": "Instance was terminated." } }, "Ec2InstanceId": "i-xxxxx", "InstanceFleetId": "if-xxxxx", "EbsVolumes": [], "PublicDnsName": "ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com", "InstanceType": "m3.xlarge", "PrivateDnsName": "ip-xx-xx-xxx-xx.ec2.internal", "Market": "SPOT", "PublicIpAddress": "xx.xx.xxx.xxx", "Id": "ci-xxxxx", "PrivateIpAddress": "10.47.191.80" } ] }
  • Pour plus de détails sur l’API, consultez ListInstances dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-security-configurations.

AWS CLI

Pour répertorier les configurations de sécurité dans la région actuelle

Commande :

aws emr list-security-configurations

Sortie :

{ "SecurityConfigurations": [ { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-1" }, { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-2" } ] }

L’exemple de code suivant montre comment utiliser list-steps.

AWS CLI

La commande suivante répertorie toutes les étapes du cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr list-steps --cluster-id j-3SD91U2E1L2QX
  • Pour plus de détails sur l’API, consultez ListSteps dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser modify-cluster-attributes.

AWS CLI

La commande suivante définit la visibilité d’un cluster EMR doté de l’ID j-301CDNY0J5XM4 pour tous les utilisateurs :

aws emr modify-cluster-attributes --cluster-id j-301CDNY0J5XM4 --visible-to-all-users
  • Pour plus de détails sur l’API, consultez ModifyClusterAttributes dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser modify-instance-fleet.

AWS CLI

Pour modifier les capacités cibles d’une flotte d’instances

Cet exemple fait passer les capacités cibles à la demande et Spot à 1 pour la flotte d’instances spécifiée.

Commande :

aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1
  • Pour plus de détails sur l’API, consultez ModifyInstanceFleet dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put.

AWS CLI

La commande suivante charge un fichier nommé healthcheck.sh dans l’instance principale du cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr put --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem --src ~/scripts/healthcheck.sh --dest /home/hadoop/bin/healthcheck.sh
  • Pour plus de détails sur l’API, consultez Put dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser remove-tags.

AWS CLI

La commande suivante supprime une balise contenant la clé prod du cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr remove-tags --resource-id j-3SD91U2E1L2QX --tag-keys prod
  • Pour plus de détails sur l’API, consultez RemoveTags dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser schedule-hbase-backup.

AWS CLI

Remarque : cette commande ne peut être utilisée qu’avec HBase sur AMI versions 2.x et 3.x

1. Pour planifier une sauvegarde complète de HBase >>>>>>> 06ab6d6e13564b5733d75abaf3b599f93cf39a23

Commande :

aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type full --dir s3://amzn-s3-demo-bucket/backup --interval 10 --unit hours --start-time 2014-04-21T05:26:10Z --consistent

Sortie :

None

2. Pour planifier une sauvegarde HBase incrémentielle

Commande :

aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type incremental --dir s3://amzn-s3-demo-bucket/backup --interval 30 --unit minutes --start-time 2014-04-21T05:26:10Z --consistent

Sortie :

None
  • Pour plus de détails sur l’API, consultez ScheduleHbaseBackup dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser socks.

AWS CLI

La commande suivante ouvre une connexion socks avec l’instance principale du cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr socks --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem

L’option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.

  • Pour plus de détails sur l’API, consultez Socks dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser ssh.

AWS CLI

La commande suivante ouvre une connexion SSH avec l’instance principale du cluster doté de l’ID j-3SD91U2E1L2QX :

aws emr ssh --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem

L’option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.

Sortie :

ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=10 -i /home/local/user/.ssh/mykey.pem hadoop@ec2-52-52-41-150.us-west-2.compute.amazonaws.com Warning: Permanently added 'ec2-52-52-41-150.us-west-2.compute.amazonaws.com,52.52.41.150' (ECDSA) to the list of known hosts. Last login: Mon Jun 1 23:15:38 2015 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 26 package(s) needed for security, out of 39 available Run "sudo yum update" to apply all updates. -------------------------------------------------------------------------------- Welcome to Amazon Elastic MapReduce running Hadoop and Amazon Linux. Hadoop is installed in /home/hadoop. Log files are in /mnt/var/log/hadoop. Check /mnt/var/log/hadoop/steps for diagnosing step failures. The Hadoop UI can be accessed via the following commands: ResourceManager lynx http://ip-172-21-11-216:9026/ NameNode lynx http://ip-172-21-11-216:9101/ -------------------------------------------------------------------------------- [hadoop@ip-172-31-16-216 ~]$
  • Pour plus de détails sur l’API, consultez Ssh dans la Référence des commandes de l’AWS CLI.