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 configuration et l’exécution du code en contexte.
Rubriques
Actions
L'exemple de code suivant montre comment utiliseradd-instance-fleet.
- AWS CLI
-
Pour ajouter une flotte d’instances de tâches à un cluster
Cet exemple ajoute une nouvelle flotte d’instances de tâches au cluster spécifié.
Commande :
aws emr add-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},InstanceTypeConfigs=['{InstanceType=m3.xlarge,BidPrice=0.5}']Sortie :
{ "ClusterId": "j-12ABCDEFGHI34JK", "InstanceFleetId": "if-23ABCDEFGHI45JJ" }-
Pour plus de détails sur l'API, voir 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://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,arg3Paramètres requis :
JarParamètres facultatifs :
Type, Name, ActionOnFailure, ArgsSortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }2. Pour ajouter des étapes Streaming à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://amzn-s3-demo-bucket/wordcount/output]Paramètres requis :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureÉquivalent JSON (contenu du fichier step.json) :
[ { "Name": "JSON Streaming Step", "Args": ["-files","s3://elasticmapreduce/samples/wordcount/wordSplitter.py","-mapper","wordSplitter.py","-reducer","aggregate","-input","s3://elasticmapreduce/samples/wordcount/input","-output","s3://amzn-s3-demo-bucket/wordcount/output"], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]REMARQUE : les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.
Commande (à l’aide du fichier step.json) :
aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./step.jsonSortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }3. Pour ajouter une étape Streaming contenant plusieurs fichiers à un cluster (JSON uniquement)
JSON (multiplefiles.json) :
[ { "Name": "JSON Streaming Step", "Type": "STREAMING", "ActionOnFailure": "CONTINUE", "Args": [ "-files", "s3://amzn-s3-demo-bucket/mapper.py,s3://amzn-s3-demo-bucket/reducer.py", "-mapper", "mapper.py", "-reducer", "reducer.py", "-input", "s3://amzn-s3-demo-bucket/input", "-output", "s3://amzn-s3-demo-bucket/output"] } ]Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./multiplefiles.jsonParamètres requis :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureSortie :
{ "StepIds":[ "s-XXXXXXXX", ] }4. Pour ajouter des étapes Hive à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,Args=[-f,s3://amzn-s3-demo-bucket/myhivescript.q,-d,INPUT=s3://amzn-s3-demo-bucket/myhiveinput,-d,OUTPUT=s3://amzn-s3-demo-bucket/myhiveoutput,arg1,arg2] Type=HIVE,Name='Hive steps',ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs]Paramètres requis :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureSortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }5. Pour ajouter des étapes Pig à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://amzn-s3-demo-bucket/mypigscript.pig,-p,INPUT=s3://amzn-s3-demo-bucket/mypiginput,-p,OUTPUT=s3://amzn-s3-demo-bucket/mypigoutput,arg1,arg2] Type=PIG,Name='Pig program',Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://amzn-s3-demo-bucket/pig-apache/output,arg1,arg2]Paramètres requis :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureSortie :
{ "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/outputParamètres requis :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureSortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }-
Pour plus de détails sur l'API, voir 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 :
None2. Pour répertorier les balises d’un cluster
--Commande :
aws emr describe-cluster --cluster-idj-XXXXXXYY--queryCluster.TagsSortie :
[ { "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, voir 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 paramètre
--use-default-roleslors 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’exemple
create-clustersuivant crée un cluster EMR simple.aws emr create-cluster \ --release-labelemr-5.14.0\ --instance-typem4.large\ --instance-count2Cette commande ne produit aucune sortie.
Exemple 2 : pour créer un cluster Amazon EMR avec des rôles et des rôles par défaut ServiceRole InstanceProfile
L’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise la configuration--instance-groups.aws emr create-cluster \ --release-labelemr-5.14.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeExemple 3 : pour créer un cluster Amazon EMR qui utilise une flotte d’instances
L'
create-clusterexemple suivant crée un cluster Amazon EMR qui utilise la--instance-fleetsconfiguration, en spécifiant deux types d'instances pour chaque flotte et deux EC2 sous-réseaux.aws emr create-cluster \ --release-labelemr-5.14.0\ --service-roleEMR_DefaultRole\ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m4.large}'] InstanceFleetType=CORE,TargetSpotCapacity=11,InstanceTypeConfigs=['{InstanceType=m4.large,BidPrice=0.5,WeightedCapacity=3}','{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}Exemple 4 : pour créer un cluster avec des rôles par défaut
L’exemple
create-clustersuivant utilise le paramètre--use-default-rolespour spécifier le rôle de service et le profil d’instance par défaut.aws emr create-cluster \ --release-labelemr-5.9.0\ --use-default-roles \ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 5 : pour créer un cluster et spécifier les applications à installer
L’exemple
create-clustersuivant utilise le paramètre--applicationspour spécifier les applications installées par Amazon EMR. Cet exemple installe Hadoop, Hive et Pig.aws emr create-cluster \ --applicationsName=HadoopName=HiveName=Pig\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 6 : pour créer un cluster incluant Spark
L’exemple suivant installe Spark.
aws emr create-cluster \ --release-labelemr-5.9.0\ --applicationsName=Spark\ --ec2-attributesKeyName=myKey\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 7 : pour spécifier une AMI personnalisée à utiliser pour des instances de cluster
L’exemple
create-clustersuivant crée une instance de cluster basée sur l’AMI Amazon Linux avec l’IDami-a518e6df.aws emr create-cluster \ --name"Cluster with My Custom AMI"\ --custom-ami-idami-a518e6df\ --ebs-root-volume-size20\ --release-labelemr-5.9.0\ --use-default-roles \ --instance-count2\ --instance-typem4.largeExemple 8 : pour personnaliser des configurations d’application
Les exemples suivants utilisent le paramètre
--configurationspour spécifier un fichier de configuration JSON contenant des personnalisations d’application pour Hadoop. Pour plus d’informations, consultez Configuration des applications dans le guide de version Amazon EMR.Contenu de
configurations.json:[ { "Classification": "mapred-site", "Properties": { "mapred.tasktracker.map.tasks.maximum": 2 } }, { "Classification": "hadoop-env", "Properties": {}, "Configurations": [ { "Classification": "export", "Properties": { "HADOOP_DATANODE_HEAPSIZE": 2048, "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19" } } ] } ]L’exemple suivant fait référence à
configurations.jsoncomme fichier local.aws emr create-cluster \ --configurationsfile://configurations.json\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateL’exemple suivant fait référence à
configurations.jsoncomme un fichier dans Amazon S3.aws emr create-cluster \ --configurationshttps://s3.amazonaws.com/amzn-s3-demo-bucket/configurations.json\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 9 : pour créer un cluster avec des groupes d’instances maîtres, principaux et de tâches
L'
create-clusterexemple suivant permet--instance-groupsde 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-labelemr-5.9.0\ --instance-groupsName=Master,InstanceGroupType=MASTER,InstanceType=m4.large,InstanceCount=1Name=Core,InstanceGroupType=CORE,InstanceType=m4.large,InstanceCount=2Name=Task,InstanceGroupType=TASK,InstanceType=m4.large,InstanceCount=2Exemple 10 : pour spécifier qu’un cluster doit se résilier une fois toutes les étapes terminées
L’exemple
create-clustersuivant utilise--auto-terminateafin de spécifier que le cluster doit s’arrêter automatiquement une fois toutes les étapes terminées.aws emr create-cluster \ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 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éemyKeyet un profil d'instance personnalisé nommémyProfile. Les paires de clés sont utilisées pour autoriser les connexions SSH aux nœuds du cluster, le plus souvent au nœud principal. Pour plus d'informations, consultez 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-attributesKeyName=myKey,InstanceProfile=myProfile\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateL’exemple suivant crée un cluster dans un sous-réseau Amazon VPC.
aws emr create-cluster \ --ec2-attributesSubnetId=subnet-xxxxx\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateL’exemple suivant crée un cluster dans la zone de disponibilité
us-east-1b.aws emr create-cluster \ --ec2-attributesAvailabilityZone=us-east-1b\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL’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-labelemr-5.9.0\ --service-rolemyServiceRole\ --ec2-attributesInstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL'exemple suivant crée un cluster et spécifie uniquement les groupes EC2 de sécurité Amazon supplémentaires.
aws emr create-cluster \ --release-labelemr-5.9.0\ --service-rolemyServiceRole\ --ec2-attributesInstanceProfile=myRole,AdditionalMasterSecurityGroups=[sg-addMaster1,sg-addMaster2,sg-addMaster3,sg-addMaster4],AdditionalSlaveSecurityGroups=[sg-addSlave1,sg-addSlave2,sg-addSlave3,sg-addSlave4]\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL’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-labelemr-5.9.0\ --service-rolemyServiceRole\ --ec2-attributesInstanceProfile=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-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL'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-labelemr-5.9.0\ --service-rolemyServiceRole\ --ec2-attributesInstanceProfile=myRole,ServiceAccessSecurityGroup=sg-service-access,EmrManagedMasterSecurityGroup=sg-master,EmrManagedSlaveSecurityGroup=sg-slave\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL’exemple suivant spécifie les paramètres de configuration du groupe de sécurité à l’aide d’un fichier JSON nommé
ec2_attributes.jsonqui est stocké localement. REMARQUE : les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.aws emr create-cluster \ --release-labelemr-5.9.0\ --service-rolemyServiceRole\ --ec2-attributesfile://ec2_attributes.json\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeContenu 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 une URI de journal
L’exemple
create-clustersuivant utilise le paramètre--enable-debugging, qui vous permet d’afficher les fichiers journaux plus facilement à l’aide de l’outil de débogage de la console Amazon EMR. Le paramètre--log-uriest obligatoire avec--enable-debugging.aws emr create-cluster \ --enable-debugging \ --log-uris3://amzn-s3-demo-bucket/myLog\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 13 : pour ajouter des balises lors de la création d’un cluster
Les balises sont des paires clé-valeur qui vous aident à identifier et à gérer les clusters. L’exemple
create-clustersuivant utilise le paramètre--tagspour créer trois balises pour un cluster, une avec le nom de la clénameet la valeurShirley Rodriguez, une seconde avec le nom de la cléageet la valeur29, et une troisième balise avec le nom de la clédepartmentet la valeurAnalytics.aws emr create-cluster \ --tags name="Shirley Rodriguez"age=29department="Analytics" \ --release-labelemr-5.32.0\ --instance-typem5.xlarge\ --instance-count3\ --use-default-rolesL’exemple suivant répertorie les balises appliquées à un cluster.
aws emr describe-cluster \ --cluster-idj-XXXXXXYY\ --queryCluster.TagsExemple 14 : pour utiliser une configuration de sécurité qui active le chiffrement et d’autres fonctionnalités de sécurité
L’exemple
create-clustersuivant utilise le paramètre--security-configurationpour spécifier une configuration de sécurité pour un cluster EMR. Vous pouvez utiliser les configurations de sécurité avec Amazon EMR version 4.8.0 ou ultérieure.aws emr create-cluster \ --instance-typem4.large\ --release-labelemr-5.9.0\ --security-configurationmySecurityConfigurationExemple 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,SizeInGBsiEbsBlockDeviceConfigsest 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-labelemr-5.9.0\ --use-default-roles \ --instance-groupsInstanceGroupType=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-terminateL'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-labelemr-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-terminateExemple 16 : pour créer un cluster avec une politique de mise à l’échelle automatique
Vous pouvez associer des politiques de mise à l’échelle automatique aux groupes d’instances principaux et aux groupes d’instances de tâches à l’aide d’Amazon EMR version 4.0 et ultérieure. La politique de 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 mise à l’échelle automatique, vous devez également spécifier le rôle par défaut pour la mise à l’échelle automatique à l’aide d’
--auto-scaling-role EMR_AutoScaling_DefaultRole.L’exemple
create-clustersuivant spécifie la politique de mise à l’échelle automatique pour le groupe d’instancesCOREà l’aide de l’argumentAutoScalingPolicyavec une structure JSON intégrée, qui spécifie la configuration de la politique de mise à l’échelle. Les groupes d’instances dotés d’une structure JSON intégrée doivent avoir tous les arguments entre guillemets simples. L’utilisation de guillemets simples est facultative pour les groupes d’instances sans structure JSON intégrée.aws emr create-cluster --release-labelemr-5.9.0\ --use-default-roles --auto-scaling-roleEMR_AutoScaling_DefaultRole\ --instance-groupsInstanceGroupType=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,
instancegroupconfig.json, pour spécifier la configuration de tous les groupes d’instances d’un cluster. Le fichier JSON spécifie la configuration de la politique de mise à l’échelle automatique pour le groupe d’instances principal.aws emr create-cluster \ --release-labelemr-5.9.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsfile://myfolder/instancegroupconfig.json\ --auto-scaling-roleEMR_AutoScaling_DefaultRoleContenu de
instancegroupconfig.json:[ { "InstanceCount": 1, "Name": "MyMasterIG", "InstanceGroupType": "MASTER", "InstanceType": "m4.large" }, { "InstanceCount": 2, "Name": "MyCoreIG", "InstanceGroupType": "CORE", "InstanceType": "m4.large", "AutoScalingPolicy": { "Constraints": { "MinCapacity": 2, "MaxCapacity": 10 }, "Rules": [ { "Name": "Default-scale-out", "Description": "Replicates the default scale-out rule in the console for YARN memory.", "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "LESS_THAN", "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Threshold": 15, "Statistic": "AVERAGE", "Unit": "PERCENT", "Dimensions": [ { "Key": "JobFlowId", "Value": "${emr.clusterId}" } ] } } } ] } } ]Exemple 17 : pour ajouter des étapes JAR personnalisées lors de la création d’un cluster
L’exemple
create-clustersuivant ajoute des étapes en spécifiant un fichier JAR stocké dans Amazon S3. Étapes pour soumettre du travail à un cluster. La fonction principale définie dans le fichier JAR s'exécute après 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 paramètre
Jar=, qui spécifie le chemin et le nom de fichier JAR. Les paramètres facultatifs sontType,Name,ActionOnFailure,ArgsetMainClass. Si la classe principale n’est pas spécifiée, le fichier JAR doit spécifierMain-Classdans son fichier manifeste.aws emr create-cluster \ --stepsType=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,Args=arg1,arg2,arg3Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3\ --release-labelemr-5.3.1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 18 : pour ajouter des étapes de streaming lors de la création d’un cluster
Les exemples
create-clustersuivants ajoutent une étape de streaming à un cluster qui se résilie une fois toutes les étapes exécutées. Les étapes de streaming nécessitent des paramètresTypeetArgs. Les paramètres facultatifs des étapes de streaming sontNameetActionOnFailure.L’exemple suivant spécifie l’étape en ligne.
aws emr create-cluster \ --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://amzn-s3-demo-bucket/wordcount/output] \ --release-labelemr-5.3.1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateL’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 comme étant leurs propres éléments dans la liste.aws emr create-cluster \ --stepsfile://./multiplefiles.json\ --release-labelemr-5.9.0\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateContenu de
multiplefiles.json:[ { "Name": "JSON Streaming Step", "Args": [ "-files", "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "-mapper", "wordSplitter.py", "-reducer", "aggregate", "-input", "s3://elasticmapreduce/samples/wordcount/input", "-output", "s3://amzn-s3-demo-bucket/wordcount/output" ], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]Exemple 19 : pour ajouter des étapes Hive lors de la création d’un cluster
L’exemple suivant ajoute des étapes Hive lors de la création d’un cluster. Les étapes Hive nécessitent des paramètres
TypeetArgs. Les paramètres facultatifs des étapes Hive sontNameetActionOnFailure.aws emr create-cluster \ --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs] \ --applicationsName=Hive\ --release-labelemr-5.3.1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeExemple 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
TypeetArgs. Les paramètres facultatifs des étapes Pig sontNameetActionOnFailure.aws emr create-cluster \ --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://amzn-s3-demo-bucket/pig-apache/output] \ --applicationsName=Pig\ --release-labelemr-5.3.1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeExemple 21 : pour ajouter des actions d’amorçage
L’exemple
create-clustersuivant exécute deux actions d’amorçage définies comme des scripts stockés dans Amazon S3.aws emr create-cluster \ --bootstrap-actionsPath=s3://amzn-s3-demo-bucket/myscript1,Name=BootstrapAction1,Args=[arg1,arg2]Path=s3://amzn-s3-demo-bucket/myscript2,Name=BootstrapAction2,Args=[arg1,arg2]\ --release-labelemr-5.3.1\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large\ --auto-terminateExemple 22 : Pour activer la vue cohérente EMRFS et personnaliser les RetryCount paramètres et RetryPeriod
L’exemple
create-clustersuivant indique le nombre de nouvelles tentatives et la période de nouvelles tentatives pour une vue cohérente EMRFS. L’argumentConsistent=trueest obligatoire.aws emr create-cluster \ --instance-typem4.large\ --release-labelemr-5.9.0\ --emrfsConsistent=true,RetryCount=6,RetryPeriod=30L’exemple suivant spécifie la même configuration EMRFS que l’exemple précédent, à l’aide d’un fichier de configuration JSON stocké localement nommé
emrfsconfig.json.aws emr create-cluster \ --instance-typem4.large\ --release-labelemr-5.9.0\ --emrfsfile://emrfsconfig.jsonContenu de
emrfsconfig.json:{ "Consistent": true, "RetryCount": 6, "RetryPeriod": 30 }Exemple 23 : pour créer un cluster avec Kerberos configuré
Les exemples
create-clustersuivants 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--kerberos-attributes.La commande suivante spécifie les attributs Kerberos du cluster en ligne.
aws emr create-cluster \ --instance-typem3.xlarge\ --release-labelemr-5.10.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --security-configurationmySecurityConfiguration\ --kerberos-attributesRealm=EC2.INTERNAL,KdcAdminPassword=123,CrossRealmTrustPrincipalPassword=123La commande suivante spécifie les mêmes attributs, mais fait référence à un fichier JSON stocké localement nommé
kerberos_attributes.json. Dans cet exemple, le fichier est enregistré dans le même répertoire où vous exécutez la commande. Vous pouvez également faire référence à un fichier de configuration enregistré dans Amazon S3.aws emr create-cluster \ --instance-typem3.xlarge\ --release-labelemr-5.10.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --security-configurationmySecurityConfiguration\ --kerberos-attributesfile://kerberos_attributes.jsonContenu de
kerberos_attributes.json:{ "Realm": "EC2.INTERNAL", "KdcAdminPassword": "123", "CrossRealmTrustPrincipalPassword": "123", }L’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise la configuration--instance-groupset dispose d’une politique de mise à l’échelle gérée.aws emr create-cluster \ --release-labelemr-5.30.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=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-labelemr-5.30.0\ --log-uris3://amzn-s3-demo-bucket/myLog\ --log-encryption-kms-key-idarn:aws:kms:us-east-1:110302272565:key/dd559181-283e-45d7-99d1-66da348c4d33\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.largeL'
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'aideSPREADd'une EC2 stratégie de placement.aws emr create-cluster \ --release-labelemr-5.30.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=3,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large\ --placement-group-configsInstanceRole=MASTERL'
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-labelemr-5.34.0\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large\ --auto-termination-policyIdleTimeout=100L'
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 clusteraws emr create-cluster \ --release-labelemr-6.6.0\ --os-release-label2.0.20220406.1\ --service-roleEMR_DefaultRole\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.largeExemple 24 : pour spécifier les attributs d’un volume racine EBS : taille, E/S par seconde et débit pour les instances de cluster créées avec la version 6.15.0 et ultérieure d’EMR
L'
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-idami-a518e6df\ --ebs-root-volume-size20\ --ebs-root-volume-iops3000\ --ebs-root-volume-throughput125\ --release-labelemr-6.15.0\ --use-default-roles \ --instance-count2\ --instance-typem4.large-
Pour plus de détails sur l'API, voir 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-rolesSortie :
If the role already exists then the command returns nothing. If the role does not exist then the output will be: [ { "RolePolicy": { "Version":"2012-10-17", "Statement": [ { "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSteps", "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:MergeShards", "kinesis:PutRecord", "kinesis:SplitShard", "rds:Describe*", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version":"2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROAIQ5SIQUGL5KMYBJX6", "CreateDate": "2015-06-09T17:09:04.602Z", "RoleName": "EMR_EC2_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_EC2_DefaultRole" } }, { "RolePolicy": { "Version":"2012-10-17", "Statement": [ { "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeKeyPairs", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RunInstances", "ec2:TerminateInstances", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRolePolicies", "iam:PassRole", "s3:CreateBucket", "s3:Get*", "s3:List*", "sdb:BatchPutAttributes", "sdb:Select", "sqs:CreateQueue", "sqs:Delete*", "sqs:GetQueue*", "sqs:ReceiveMessage" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version":"2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" } } ] }, "RoleId": "AROAI3SRVPPVSRDLARBPY", "CreateDate": "2015-06-09T17:09:10.401Z", "RoleName": "EMR_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_DefaultRole" } } ]-
Pour plus de détails sur l'API, voir 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 (avec security_configuration.json) :
aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.jsonSortie :
{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }2. Pour créer une configuration de sécurité avec Kerberos activé à l’aide d’un KDC dédié au cluster et d’une confiance entre domaines
Commande :
aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'Sortie :
{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }Équivalent JSON (contenu de security_configuration.json) :
{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }Commande (avec security_configuration.json) :
aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.jsonSortie :
{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }-
Pour plus de détails sur l'API, voir CreateSecurityConfiguration
la section Référence des AWS CLI commandes.
-
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 MySecurityConfigSortie :
None-
Pour plus de détails sur l'API, voir DeleteSecurityConfiguration
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserdescribe-cluster.
- AWS CLI
-
Commande :
aws emr describe-cluster --cluster-id j-XXXXXXXXSortie :
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, voir 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-3LZC0QUT43AMdans un cluster avec l’ID de clusterj-3SD91U2E1L2QX:aws emr describe-step --cluster-idj-3SD91U2E1L2QX--step-ids-3LZC0QUT43AMSortie :
{ "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, voir 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’archive
hadoop-examples.jardepuis l’instance principale dans un cluster avec l’ID de clusterj-3SD91U2E1L2QX:aws emr get --cluster-idj-3SD91U2E1L2QX--key-pair-file~/.ssh/mykey.pem--src/home/hadoop-examples.jar--dest~-
Pour plus de détails sur l’API, consultez Get
dans la Référence des commandes de l‘AWS CLI .
-
L'exemple de code suivant montre comment utiliserlist-clusters.
- AWS CLI
-
La commande suivante répertorie tous les clusters EMR actifs dans la région actuelle :
aws emr list-clusters --activeSortie :
{ "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, voir ListClusters
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserlist-instance-fleets.
- AWS CLI
-
Pour obtenir des détails de configuration des flottes d’instances dans un cluster
Cet exemple répertorie les détails des flottes d’instances dans le cluster spécifié.
Commande :
list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'Sortie :
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }-
Pour plus de détails sur l'API, voir 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 de cluster
j-3C6XNQ39VR9WL:aws emr list-instances --cluster-idj-3C6XNQ39VR9WLSortie :
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, voir 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-configurationsSortie :
{ "SecurityConfigurations": [ { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-1" }, { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-2" } ] }-
Pour plus de détails sur l'API, voir ListSecurityConfigurations
la section Référence des AWS CLI commandes.
-
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 de cluster
j-3SD91U2E1L2QX:aws emr list-steps --cluster-idj-3SD91U2E1L2QX-
Pour plus de détails sur l'API, voir 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-301CDNY0J5XM4pour tous les utilisateurs :aws emr modify-cluster-attributes --cluster-idj-301CDNY0J5XM4--visible-to-all-users-
Pour plus de détails sur l'API, voir 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’une flotte d’instances
Cet exemple modifie les capacités cibles à la demande et Spot sur 1 pour la flotte d’instances spécifiée.
Commande :
aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1-
Pour plus de détails sur l'API, voir 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.shsur l’instance principale d’un cluster avec l’ID de clusterj-3SD91U2E1L2QX:aws emr put --cluster-idj-3SD91U2E1L2QX--key-pair-file~/.ssh/mykey.pem--src~/scripts/healthcheck.sh--dest/home/hadoop/bin/healthcheck.sh-
Pour plus de détails sur l’API, consultez Put
dans la Référence des commandes de l’AWS CLI .
-
L'exemple de code suivant montre comment utiliserremove-tags.
- AWS CLI
-
La commande suivante supprime une balise contenant la clé
prodd’un cluster portant l’ID de clusterj-3SD91U2E1L2QX:aws emr remove-tags --resource-idj-3SD91U2E1L2QX--tag-keysprod-
Pour plus de détails sur l'API, voir 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 --consistentSortie :
None2. 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 --consistentSortie :
None-
Pour plus de détails sur l'API, voir 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 de cluster
j-3SD91U2E1L2QX:aws emr socks --cluster-idj-3SD91U2E1L2QX--key-pair-file~/.ssh/mykey.pemL’option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.
-
Pour plus de détails sur l’API, consultez Socks
dans la Référence des commandes de l’AWS CLI .
-
L'exemple de code suivant montre comment utiliserssh.
- AWS CLI
-
La commande suivante ouvre une connexion SSH avec l’instance principale d’un cluster portant l’ID de cluster
j-3SD91U2E1L2QX:aws emr ssh --cluster-idj-3SD91U2E1L2QX--key-pair-file~/.ssh/mykey.pemL’option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.
Sortie :
ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=10 -i /home/local/user/.ssh/mykey.pem hadoop@ec2-52-52-41-150.us-west-2.compute.amazonaws.com Warning: Permanently added 'ec2-52-52-41-150.us-west-2.compute.amazonaws.com,52.52.41.150' (ECDSA) to the list of known hosts. Last login: Mon Jun 1 23:15:38 2015 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 26 package(s) needed for security, out of 39 available Run "sudo yum update" to apply all updates. -------------------------------------------------------------------------------- Welcome to Amazon Elastic MapReduce running Hadoop and Amazon Linux. Hadoop is installed in /home/hadoop. Log files are in /mnt/var/log/hadoop. Check /mnt/var/log/hadoop/steps for diagnosing step failures. The Hadoop UI can be accessed via the following commands: ResourceManager lynx http://ip-172-21-11-216:9026/ NameNode lynx http://ip-172-21-11-216:9101/ -------------------------------------------------------------------------------- [hadoop@ip-172-31-16-216 ~]$-
Pour plus de détails sur l’API, consultez Ssh
dans la Référence des commandes de l’AWS CLI .
-