Exemples d'Amazon EMR 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.

Exemples d'Amazon EMR 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'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 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 plus de détails sur l'API, reportez-vous AddInstanceFleetà la section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliseradd-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://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

Équivalent JSON (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" } ]

REMARQUE : les arguments JSON 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 (JSON uniquement)

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 plus de détails sur l'API, reportez-vous AddStepsà la 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 plus de détails sur l'API, reportez-vous AddTagsà la 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 service Amazon EMR et votre profil d' EC2 instance Amazon. Si vous ne l'avez pas encore fait, vous devez spécifier chaque rôle IAM 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 des rôles IAM, consultez Configurer les rôles IAM pour les autorisations Amazon EMR sur les services AWS dans le guide de gestion Amazon EMR.

Exemple 1 : pour créer un cluster

L'create-clusterexemple 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 aucun résultat.

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

L'create-clusterexemple suivant crée un cluster Amazon EMR 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 cluster Amazon EMR qui utilise un parc d'instances

L'create-clusterexemple suivant crée un cluster Amazon EMR 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 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 les instances de cluster

L'create-clusterexemple suivant crée une instance de cluster basée sur l'AMI Amazon Linux 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 configuration JSON contenant des personnalisations d'applications pour Hadoop. Pour de plus amples informations, veuillez consulter 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 à 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/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 principaux, principaux et de tâches

L'create-clusterexemple suivant permet --instance-groups de spécifier le type et le nombre d' EC2 instances à 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 les connexions SSH aux nœuds du cluster, le plus souvent au nœud maître. Pour plus d'informations, consultez Utiliser une paire de EC2 clés Amazon 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 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é 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 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é 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 EC2 sécurité Amazon spécifique pour activer l'accès au service Amazon EMR, 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 fichier JSON nommé ec2_attributes.json qui est stocké localement. REMARQUE : les arguments JSON 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 URI de journal

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 console Amazon EMR. Le --log-uri paramètre 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'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 cluster EMR. 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 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 requis :VolumeType, SizeInGB si EbsBlockDeviceConfigs est spécifié.

L'create-clusterexemple suivant crée un cluster avec plusieurs volumes EBS 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 volumes EBS 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 et 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 structure JSON intégrée, qui spécifie la configuration de la politique de dimensionnement. Les groupes d'instances dotés d'une structure JSON 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 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 un fichier JSON pour spécifier la configuration de tous les groupes d'instances d'un cluster. instancegroupconfig.json Le fichier JSON 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 étapes JAR personnalisées lors de la création d'un cluster

L'create-clusterexemple suivant ajoute des étapes en spécifiant un fichier JAR stocké dans Amazon S3. Les étapes soumettent le travail à un cluster. La fonction principale définie dans le fichier JAR 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 étapes JAR personnalisées nécessitent le Jar= paramètre, qui spécifie le chemin et le nom de fichier du JAR. Les paramètres facultatifs sont TypeName,ActionOnFailure,Args, etMainClass. Si aucune classe principale n'est spécifiée, le fichier JAR doit le 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 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 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 pour spécifier l'étape. Les arguments JSON 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 activer la vue cohérente EMRFS et personnaliser les RetryCount paramètres et RetryPeriod

L'create-clusterexemple suivant indique le nombre de tentatives et la période de nouvelles tentatives 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, en utilisant 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 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 utilisant. --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 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 cluster Amazon EMR 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 cluster Amazon EMR qui utilise le « -- 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'create-clusterexemple suivant crée un cluster Amazon EMR 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 placement à l'aide SPREAD d'une EC2 stratégie de 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 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'create-clusterexemple suivant crée un cluster Amazon EMR 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 racine EBS : taille, E/S par seconde et débit pour les instances de cluster créées avec EMR versions 6.15.0 et ultérieures

L'create-clusterexemple suivant crée un cluster Amazon EMR qui utilise les attributs du volume racine pour configurer les spécifications des volumes racine 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
  • Pour plus de détails sur l'API, reportez-vous CreateClusterExamplesà la section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisercreate-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": "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 plus de détails sur l'API, reportez-vous CreateDefaultRolesà la 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 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 (à 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 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 (à 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 plus de détails sur l'API, reportez-vous DescribeClusterà la 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 plus de détails sur l'API, reportez-vous DescribeStepà la 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 plus de détails sur l'API, 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 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, reportez-vous ListClustersà la 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 plus de détails sur l'API, reportez-vous ListInstanceFleetsà la 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 plus de détails sur l'API, reportez-vous ListInstancesà la 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 plus de détails sur l'API, reportez-vous ListStepsà la 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 cluster EMR avec 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, reportez-vous ModifyClusterAttributesà la section Référence des AWS CLI commandes.

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 plus de détails sur l'API, reportez-vous ModifyInstanceFleetà la 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 plus de détails sur l'API, 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 plus de détails sur l'API, reportez-vous RemoveTagsà la 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 versions 2.x et 3.x de l'AMI

1. Pour planifier une HBase sauvegarde complète >>>>>> 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 incrémentielle HBase

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, reportez-vous ScheduleHbaseBackupà la 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 plus de détails sur l'API, consultez 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 plus de détails sur l'API, voir Ssh dans AWS CLI Command Reference.