EMRExemples d'Amazon utilisant AWS CLI - AWS Command Line Interface

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.

EMRExemples d'Amazon utilisant AWS CLI

Les exemples de code suivants vous montrent comment effectuer des actions et implémenter des scénarios courants à l' AWS Command Line Interface aide d'AmazonEMR.

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 montrent comment appeler des fonctions de service individuelles, vous pouvez les visualiser dans leur contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la façon de configurer et d'exécuter le code en contexte.

Rubriques

Actions

L'exemple de code suivant montre comment utiliseradd-instance-fleet.

AWS CLI

Pour ajouter un parc d'instances de tâches à un cluster

Cet exemple ajoute un nouveau parc 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 API plus de détails, voir AddInstanceFleetla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliseradd-steps.

AWS CLI

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

Commande :

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

Paramètres requis :

Jar

Paramètres facultatifs :

Type, Name, ActionOnFailure, Args

Sortie :

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

2. Pour ajouter des étapes de 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://mybucket/wordcount/output]

Paramètres requis :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

JSONéquivalent (contenu de 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://mybucket/wordcount/output"], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]

NOTE: JSON les arguments doivent inclure des options et des valeurs en tant qu'éléments propres dans la liste.

Commande (à l'aide de 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 de streaming contenant plusieurs fichiers à un cluster (JSONuniquement)

JSON(multiplefiles.json) :

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

Commande :

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

Paramètres requis :

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://mybucket/myhivescript.q,-d,INPUT=s3://mybucket/myhiveinput,-d,OUTPUT=s3://mybucket/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://mybucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs]

Paramètres requis :

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://mybucket/mypigscript.pig,-p,INPUT=s3://mybucket/mypiginput,-p,OUTPUT=s3://mybucket/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://mybucket/pig-apache/output,arg1,arg2]

Paramètres requis :

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 requis :

Type, Args

Paramètres facultatifs :

Name, ActionOnFailure

Sortie :

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
  • Pour API plus de détails, voir AddStepsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliseradd-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 API plus de détails, voir AddTagsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisercreate-cluster-examples.

AWS CLI

La plupart des exemples suivants supposent que vous avez spécifié votre rôle de EMR service Amazon et votre profil d'EC2instance Amazon. Si vous ne l'avez pas encore fait, vous devez spécifier chaque IAM rôle requis ou utiliser le --use-default-roles paramètre lors de la création de votre cluster. Pour plus d'informations sur la spécification IAM des rôles, consultez Configurer IAM les rôles pour Amazon EMR Permissions to AWS Services dans le guide EMR de gestion Amazon.

Exemple 1 : pour créer un cluster

L'create-clusterexemple suivant crée un EMR cluster simple.

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

Cette commande ne produit aucun résultat.

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

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

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 EMR cluster Amazon qui utilise un parc d'instances

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

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'create-clusterexemple suivant utilise le --use-default-roles paramètre 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'create-clusterexemple suivant utilise le --applications paramètre pour spécifier les applications EMR installées par Amazon. 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 personnalisation AMI à utiliser pour les instances de cluster

L'create-clusterexemple suivant crée une instance de cluster basée sur Amazon Linux AMI avec IDami-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 les configurations des applications

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

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 à 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 à un fichier dans Amazon S3.

aws emr create-cluster \ --configurations https://s3.amazonaws.com/myBucket/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 principaux, principaux et de tâches

L'create-clusterexemple suivant permet --instance-groups de spécifier le type et le nombre d'EC2instances à utiliser pour les groupes d'instances principaux, principaux 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 se terminer une fois toutes les étapes terminées

L'create-clusterexemple suivant indique que le cluster doit s'arrêter automatiquement une fois toutes les étapes terminées. --auto-terminate

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 EC2 clés Amazon, la configuration réseau et les groupes de sécurité

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

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 VPC sous-réseau Amazon.

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 us-east-1b disponibilité.

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é EMR gérés par Amazon.

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 les groupes EC2 de sécurité Amazon 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é EMR -Managed, 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 VPC privé et utilise un groupe de EC2 sécurité Amazon spécifique pour activer l'accès aux EMR services Amazon, ce qui est requis 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 JSON fichier nommé ec2_attributes.json qui est stocké localement. NOTE: JSON les arguments doivent inclure des options et des valeurs en tant qu'éléments propres 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 un journal URI

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

aws emr create-cluster \ --enable-debugging \ --log-uri s3://myBucket/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'create-clusterexemple suivant utilise le --tags paramètre pour créer trois balises pour un cluster, une avec le nom de la clé name et la valeurShirley Rodriguez, une seconde avec le nom de la clé age et la valeur29, et une troisième balise avec le nom de la clé department et la valeurAnalytics.

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'create-clusterexemple suivant utilise le --security-configuration paramètre pour spécifier une configuration de sécurité pour un EMR cluster. Vous pouvez utiliser des 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 EBS de stockage supplémentaires configurés pour les groupes d'instances

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

L'create-clusterexemple suivant crée un cluster avec plusieurs EBS volumes attachés aux EC2 instances du 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 EBS volumes attachés aux EC2 instances du 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, 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 dimensionnement automatique

Vous pouvez associer des politiques de dimensionnement automatique aux groupes d'instances principaux et aux groupes d'instances de tâches à l'aide d'Amazon EMR version 4.0 ou ultérieure. La politique de dimensionnement automatique ajoute et supprime des EC2 instances de manière dynamique en réponse à une CloudWatch métrique Amazon. Pour plus d'informations, consultez la section Utilisation du dimensionnement 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 dimensionnement automatique, vous devez également spécifier le rôle par défaut pour le dimensionnement automatique à l'aide de--auto-scaling-role EMR_AutoScaling_DefaultRole.

L'create-clusterexemple suivant spécifie la politique de dimensionnement automatique pour le groupe d'COREinstances à l'aide de l'AutoScalingPolicyargument avec une JSON structure intégrée, qui spécifie la configuration de la politique de dimensionnement. Les groupes d'instances dotés d'une JSON structure intégrée doivent avoir l'ensemble des arguments entre guillemets simples. L'utilisation de guillemets simples est facultative pour les groupes d'instances sans JSON structure 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 un JSON fichier pour spécifier la configuration de tous les groupes d'instances d'un cluster. instancegroupconfig.json Le JSON fichier spécifie la configuration de la politique de dimensionnement 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 : Ajouter des JAR étapes personnalisées lors de la création d'un cluster

L'create-clusterexemple suivant ajoute des étapes en spécifiant un JAR fichier stocké dans Amazon S3. Les étapes soumettent le travail à un cluster. La fonction principale définie dans le JAR fichier s'exécute après le provisionnement EC2 des instances, l'exécution de toutes les actions d'amorçage et l'installation des applications. Les étapes sont spécifiées à l'aide deType=CUSTOM_JAR.

Les JAR étapes personnalisées nécessitent le Jar= paramètre, qui spécifie le chemin et le nom de fichier duJAR. Les paramètres facultatifs sont TypeName,ActionOnFailure,Args, etMainClass. Si aucune classe principale n'est spécifiée, le JAR fichier doit le spécifier Main-Class dans son fichier manifeste.

aws emr create-cluster \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/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 create-cluster exemples suivants ajoutent une étape de streaming à un cluster qui s'arrête une fois toutes les étapes exécutées. Les étapes de streaming nécessitent des paramètres Type etArgs. Les paramètres facultatifs des étapes de diffusion sont Name etActionOnFailure.

L'exemple suivant indique 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://mybucket/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 JSON configuration stocké localement nommémultiplefiles.json. La JSON configuration spécifie plusieurs fichiers. Pour spécifier plusieurs fichiers au cours d'une étape, vous devez utiliser un fichier JSON de configuration pour spécifier l'étape. JSONles arguments doivent inclure des options et des valeurs en tant qu'éléments propres 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://mybucket/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 les étapes Hive lors de la création d'un cluster. Les étapes de la ruche nécessitent des paramètres Type et. Args Les paramètres optionnels des étapes de la ruche 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://mybucket/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 requis pour les étapes du porc sont Type etArgs. Les paramètres optionnels de Pig Steps sont Name etActionOnFailure.

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://mybucket/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 bootstrap

L'create-clusterexemple suivant exécute deux actions bootstrap définies comme des scripts stockés dans Amazon S3.

aws emr create-cluster \ --bootstrap-actions Path=s3://mybucket/myscript1,Name=BootstrapAction1,Args=[arg1,arg2] Path=s3://mybucket/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 permettre un affichage EMRFS cohérent et personnaliser les RetryPeriod paramètres RetryCount et

L'create-clusterexemple suivant indique le nombre de tentatives et la période de nouvelles tentatives pour un affichage EMRFS cohérent. 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 EMRFS configuration que l'exemple précédent, à l'aide d'un fichier de JSON configuration 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 create-cluster exemples 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 à l'aide de ce dernier. --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 JSON fichier stocké localement nommékerberos_attributes.json. Dans cet exemple, le fichier est enregistré dans le répertoire où vous exécutez la commande. Vous pouvez également référencer 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'create-clusterexemple suivant crée un EMR cluster Amazon qui utilise la --instance-groups configuration et dispose d'une politique de dimensionnement 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'create-clusterexemple suivant crée un EMR cluster Amazon qui utilise le « -- log-encryption-kms-key -id » pour définir l'ID de KMS clé utilisé pour le chiffrement des journaux.

aws emr create-cluster \ --release-label emr-5.30.0 \ --log-uri s3://myBucket/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'create-clusterexemple suivant crée un EMR cluster Amazon qui utilise la configuration « -- placement-group-configs » pour placer des nœuds maîtres dans un cluster à haute disponibilité (HA) au sein d'un groupe de EC2 placement à l'aide d'une stratégie de SPREAD placement.

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'create-clusterexemple suivant crée un EMR cluster Amazon qui utilise la configuration « -- auto-termination-policy » pour définir un seuil de fin 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'create-clusterexemple suivant crée un EMR cluster Amazon qui utilise le « -- os-release-label » pour définir une version 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 EBS racine : taille, E/S par seconde et débit pour les instances de cluster créées avec les EMR versions 6.15.0 et ultérieures

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

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

L'exemple de code suivant montre comment utilisercreate-default-roles.

AWS CLI

1. Pour créer le IAM rôle 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": "2008-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": "2008-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 API plus de détails, voir CreateDefaultRolesla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisercreate-security-configuration.

AWS CLI

1. Pour créer une configuration de sécurité avec le chiffrement en transit activé avec PEM 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" }

JSONéquivalent (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 (à l'aide de 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 de la confiance dédiée au cluster KDC et 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" }

JSONéquivalent (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 (à l'aide de 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 utiliserdelete-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 utiliserdescribe-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 API plus de détails, voir DescribeClusterla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserdescribe-step.

AWS CLI

La commande suivante décrit une étape avec l'ID d'étape s-3LZC0QUT43AM dans un cluster avec l'ID de cluster 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 API plus de détails, voir DescribeStepla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserget.

AWS CLI

Ce qui suit télécharge l'hadoop-examples.jararchive depuis l'instance principale dans un cluster avec l'ID du cluster j-3SD91U2E1L2QX :

aws emr get --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem --src /home/hadoop-examples.jar --dest ~
  • Pour API plus de détails, voir Get in AWS CLI Command Reference.

L'exemple de code suivant montre comment utiliserlist-clusters.

AWS CLI

La commande suivante répertorie tous les EMR clusters actifs de 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 API plus de détails, voir ListClustersla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlist-instance-fleets.

AWS CLI

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

Cet exemple répertorie les détails des flottes d'instances du 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 API plus de détails, voir ListInstanceFleetsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlist-instances.

AWS CLI

La commande suivante répertorie toutes les instances d'un cluster avec l'ID du cluster 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 API plus de détails, voir ListInstancesla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlist-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 utiliserlist-steps.

AWS CLI

La commande suivante répertorie toutes les étapes d'un cluster avec l'ID du cluster j-3SD91U2E1L2QX :

aws emr list-steps --cluster-id j-3SD91U2E1L2QX
  • Pour API plus de détails, voir ListStepsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisermodify-cluster-attributes.

AWS CLI

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

aws emr modify-cluster-attributes --cluster-id j-301CDNY0J5XM4 --visible-to-all-users

L'exemple de code suivant montre comment utilisermodify-instance-fleet.

AWS CLI

Pour modifier les capacités cibles d'un parc d'instances

Cet exemple modifie les capacités cibles On-Demand et Spot à 1 pour le parc d'instances spécifié.

Commande :

aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1
  • Pour API plus de détails, voir ModifyInstanceFleetla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserput.

AWS CLI

La commande suivante télécharge un fichier nommé healthcheck.sh sur l'instance principale d'un cluster avec l'ID du cluster : 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 API plus de détails, voir Put in AWS CLI Command Reference.

L'exemple de code suivant montre comment utiliserremove-tags.

AWS CLI

La commande suivante supprime une balise contenant la clé prod d'un cluster portant l'ID du cluster j-3SD91U2E1L2QX :

aws emr remove-tags --resource-id j-3SD91U2E1L2QX --tag-keys prod
  • Pour API plus de détails, voir RemoveTagsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserschedule-hbase-backup.

AWS CLI

Remarque : Cette commande ne peut être utilisée qu'avec HBase les AMI versions 2.x et 3.x

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

Commande :

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

Sortie :

None

2. Pour planifier une sauvegarde incrémentielle HBase

Commande :

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

Sortie :

None
  • Pour API plus de détails, voir ScheduleHbaseBackupla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisersocks.

AWS CLI

La commande suivante ouvre une connexion Socks avec l'instance principale d'un cluster portant l'ID du cluster 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 API plus de détails, voir Socks dans AWS CLI Command Reference.

L'exemple de code suivant montre comment utiliserssh.

AWS CLI

La commande suivante ouvre une connexion SSH avec l'instance principale d'un cluster portant l'ID du cluster : 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 API plus de détails, voir Ssh dans AWS CLI Command Reference.