Exemples d’utilisation de l’AWS CLI avec Amazon EMR
Les exemples de code suivants montrent comment réaliser des actions et mettre en œuvre des scénarios courants en utilisant l’AWS Command Line Interface avec Amazon EMR.
Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous indiquent comment appeler des fonctions de service individuelles, vous pouvez les voir en contexte dans leurs scénarios associés.
Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la configuration et l’exécution du code en contexte.
Rubriques
Actions
L’exemple de code suivant montre comment utiliser add-instance-fleet.
- AWS CLI
-
Pour ajouter une flotte d’instances de tâches à un cluster
Cet exemple ajoute une nouvelle flotte d’instances de tâches au cluster spécifié.
Commande :
aws emr add-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},InstanceTypeConfigs=['{InstanceType=m3.xlarge,BidPrice=0.5}']Sortie :
{ "ClusterId": "j-12ABCDEFGHI34JK", "InstanceFleetId": "if-23ABCDEFGHI45JJ" }-
Pour plus de détails sur l’API, consultez AddInstanceFleet
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser add-steps.
- AWS CLI
-
1. Pour ajouter des étapes JAR personnalisées à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://amzn-s3-demo-bucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3Paramètres obligatoires :
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 obligatoires :
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 obligatoires :
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 obligatoires :
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 obligatoires :
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 obligatoires :
Type, ArgsParamètres facultatifs :
Name, ActionOnFailureSortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }-
Pour plus de détails sur l’API, consultez AddSteps
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser add-tags.
- AWS CLI
-
1. Pour ajouter des balises à un cluster
Commande :
aws emr add-tags --resource-id j-xxxxxxx --tags name="John Doe" age=29 sex=male address="123 East NW Seattle"Sortie :
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, consultez AddTags
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser create-cluster-examples.
- AWS CLI
-
La plupart des exemples suivants supposent que vous avez spécifié votre rôle de service Amazon EMR et votre profil d’instance Amazon EC2. Si vous ne l’avez pas encore fait, vous devez spécifier chaque rôle IAM requis ou utiliser le paramètre
--use-default-roleslors de la création de votre cluster. Pour plus d’informations sur la spécification des rôles IAM, consultez Configuration des rôles de service IAM pour les autorisations Amazon EMR aux services et ressources AWS dans le Guide de gestion Amazon EMR.Exemple 1 : pour créer un cluster
L’exemple
create-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 les rôles ServiceRole et InstanceProfile par défaut
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’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise la configuration--instance-fleets, en spécifiant deux types d’instances pour chaque flotte et deux sous-réseaux EC2.aws emr create-cluster \ --release-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 dont l’ID estami-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 un 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’exemple
create-clustersuivant utilise--instance-groupsafin de spécifier le type et le nombre d’instances EC2 à utiliser pour les groupes d’instances maîtres, principales et de tâches.aws emr create-cluster \ --release-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 être résilié 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 clés Amazon EC2, la configuration réseau et les groupes de sécurité
L’exemple
create-clustersuivant crée un cluster avec la paire de clés Amazon EC2 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 Utilisation d’une paire de clés Amazon EC2 pour les informations d’identification SSH dans le Guide de gestion Amazon EMR.aws emr create-cluster \ --ec2-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 des groupes de sécurité Amazon EC2 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 sécurité Amazon EC2 spécifique pour activer l’accès au service Amazon EMR, ce qui est obligatoire pour les clusters situés dans des sous-réseaux privés.
aws emr create-cluster \ --release-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.jsonstocké 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 l’URI d’un 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 obligatoires :
VolumeType,SizeInGBsiEbsBlockDeviceConfigsest spécifié.L’exemple
create-clustersuivant crée un cluster avec plusieurs volumes EBS attachés à des instances EC2 dans le 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 à des instances EC2 du groupe d’instances maître.
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 mise à l’échelle automatique ajoute et supprime dynamiquement des instances EC2 en réponse à une métrique Amazon CloudWatch. Pour plus d’informations, consultez Utilisation de la mise à l’échelle automatique dans Amazon EMR <https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html> dans le Guide de gestion Amazon EMR.
Lorsque vous associez une politique de mise à l’échelle automatique, vous devez également spécifier le rôle par défaut pour la mise à l’échelle automatique à l’aide d’
--auto-scaling-role EMR_AutoScaling_DefaultRole.L’exemple
create-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 le fichier JSON
instancegroupconfig.jsonpour 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 que les instances EC2 sont provisionnées, que toutes les actions d’amorçage sont exécutées et que les applications sont installées. Les étapes sont spécifiées à l’aide 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 afin de définir l’étape. Les arguments JSON doivent inclure des options et des valeurs comme étant leurs propres éléments dans la liste.aws emr create-cluster \ --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 obligatoires pour les étapes Pig 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 paramètres RetryCount et RetryPeriod
L’exemple
create-clustersuivant indique le nombre de nouvelles tentatives et leur durée 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 avec--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’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise le paramètre « --log-encryption-kms-key-id » pour définir l’ID de clé KMS utilisé pour le chiffrement des journaux.aws emr create-cluster \ --release-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’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise la configuration « --placement-group-configs » pour placer des nœuds principaux dans un cluster à haute disponibilité (HA) au sein d’un groupe de placement EC2 à l’aide d’une stratégie de placementSPREAD.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’exemple
create-clustersuivant 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’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise le « --os-release-label » pour définir une version d’Amazon Linux pour le lancement du cluster.aws emr create-cluster \ --release-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’exemple
create-clustersuivant crée un cluster Amazon EMR qui utilise les attributs du volume racine pour configurer les spécifications des volumes racines pour les instances EC2.aws emr create-cluster \ --name"Cluster with My Custom AMI"\ --custom-ami-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, consultez CreateClusterExamples
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser create-default-roles.
- AWS CLI
-
1. Pour créer le rôle IAM par défaut pour EC2
Commande :
aws emr create-default-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, consultez CreateDefaultRoles
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser create-security-configuration.
- AWS CLI
-
1. Pour créer une configuration de sécurité avec le chiffrement en transit activé avec PEM pour le fournisseur de certificats, et le chiffrement au repos activé avec SSE-S3 pour le chiffrement S3 et AWS-KMS pour le fournisseur de clé de disque local
Commande :
aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : true, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-S3" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'Sortie :
{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }Équivalent JSON (contenu de security_configuration.json) :
{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-S3" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }Commande (avec security_configuration.json) :
aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.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, consultez CreateSecurityConfiguration
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser delete-security-configuration.
- AWS CLI
-
Pour supprimer une configuration de sécurité dans la région actuelle
Commande :
aws emr delete-security-configuration --name MySecurityConfigSortie :
None-
Pour plus de détails sur l’API, consultez DeleteSecurityConfiguration
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser describe-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, consultez DescribeCluster
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser describe-step.
- AWS CLI
-
La commande suivante décrit l’étape dotée de l’ID
s-3LZC0QUT43AMdans le cluster doté de l’IDj-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, consultez DescribeStep
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser get.
- AWS CLI
-
Ce qui suit télécharge l’archive
hadoop-examples.jardepuis l’instance principale dans le cluster doté de l’IDj-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 utiliser list-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, consultez ListClusters
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser list-instance-fleets.
- AWS CLI
-
Pour obtenir les détails de configuration des flottes d’instances dans un cluster
Cet exemple répertorie les détails des flottes d’instances dans le cluster spécifié.
Commande :
list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'Sortie :
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }-
Pour plus de détails sur l’API, consultez ListInstanceFleets
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser list-instances.
- AWS CLI
-
La commande suivante répertorie toutes les instances du cluster doté de l’ID
j-3C6XNQ39VR9WL:aws emr list-instances --cluster-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, consultez ListInstances
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser list-security-configurations.
- AWS CLI
-
Pour répertorier les configurations de sécurité dans la région actuelle
Commande :
aws emr list-security-configurationsSortie :
{ "SecurityConfigurations": [ { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-1" }, { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-2" } ] }-
Pour plus de détails sur l’API, consultez ListSecurityConfigurations
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser list-steps.
- AWS CLI
-
La commande suivante répertorie toutes les étapes du cluster doté de l’ID
j-3SD91U2E1L2QX:aws emr list-steps --cluster-idj-3SD91U2E1L2QX-
Pour plus de détails sur l’API, consultez ListSteps
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser modify-cluster-attributes.
- AWS CLI
-
La commande suivante définit la visibilité d’un cluster EMR doté de l’ID
j-301CDNY0J5XM4pour tous les utilisateurs :aws emr modify-cluster-attributes --cluster-idj-301CDNY0J5XM4--visible-to-all-users-
Pour plus de détails sur l’API, consultez ModifyClusterAttributes
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser modify-instance-fleet.
- AWS CLI
-
Pour modifier les capacités cibles d’une flotte d’instances
Cet exemple fait passer les capacités cibles à la demande et Spot à 1 pour la flotte d’instances spécifiée.
Commande :
aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1-
Pour plus de détails sur l’API, consultez ModifyInstanceFleet
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser put.
- AWS CLI
-
La commande suivante charge un fichier nommé
healthcheck.shdans l’instance principale du cluster doté de l’IDj-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 utiliser remove-tags.
- AWS CLI
-
La commande suivante supprime une balise contenant la clé
proddu cluster doté de l’IDj-3SD91U2E1L2QX:aws emr remove-tags --resource-idj-3SD91U2E1L2QX--tag-keysprod-
Pour plus de détails sur l’API, consultez RemoveTags
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser schedule-hbase-backup.
- AWS CLI
-
Remarque : cette commande ne peut être utilisée qu’avec HBase sur AMI versions 2.x et 3.x
1. Pour planifier une sauvegarde complète de HBase >>>>>>> 06ab6d6e13564b5733d75abaf3b599f93cf39a23
Commande :
aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type full --dir s3://amzn-s3-demo-bucket/backup --interval 10 --unit hours --start-time 2014-04-21T05:26:10Z --consistentSortie :
None2. Pour planifier une sauvegarde HBase incrémentielle
Commande :
aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type incremental --dir s3://amzn-s3-demo-bucket/backup --interval 30 --unit minutes --start-time 2014-04-21T05:26:10Z --consistentSortie :
None-
Pour plus de détails sur l’API, consultez ScheduleHbaseBackup
dans la Référence des commandes de l’AWS CLI.
-
L’exemple de code suivant montre comment utiliser socks.
- AWS CLI
-
La commande suivante ouvre une connexion socks avec l’instance principale du cluster doté de l’ID
j-3SD91U2E1L2QX:aws emr socks --cluster-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 utiliser ssh.
- AWS CLI
-
La commande suivante ouvre une connexion SSH avec l’instance principale du cluster doté de l’ID
j-3SD91U2E1L2QX:aws emr ssh --cluster-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.
-