Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
EMRExemples d'Amazon utilisant AWS CLI
Les exemples de code suivants vous montrent comment effectuer des actions et implémenter des scénarios courants à l' AWS Command Line Interface aide d'AmazonEMR.
Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous montrent comment appeler des fonctions de service individuelles, vous pouvez les visualiser dans leur contexte dans leurs scénarios associés.
Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la façon de configurer et d'exécuter le code en contexte.
Rubriques
Actions
L'exemple de code suivant montre comment utiliseradd-instance-fleet
.
- AWS CLI
-
Pour ajouter un parc d'instances de tâches à un cluster
Cet exemple ajoute un nouveau parc d'instances de tâches au cluster spécifié.
Commande :
aws emr add-instance-fleet --cluster-id '
j-12ABCDEFGHI34JK
' --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},InstanceTypeConfigs=['{InstanceType=m3.xlarge,BidPrice=0.5}']Sortie :
{ "ClusterId": "j-12ABCDEFGHI34JK", "InstanceFleetId": "if-23ABCDEFGHI45JJ" }
-
Pour API plus de détails, voir 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 JAR étapes personnalisées à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://mybucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://mybucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3
Paramètres requis :
Jar
Paramètres facultatifs :
Type, Name, ActionOnFailure, Args
Sortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
2. Pour ajouter des étapes de streaming à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://mybucket/wordcount/output]
Paramètres requis :
Type, Args
Paramètres facultatifs :
Name, ActionOnFailure
JSONéquivalent (contenu de step.json) :
[ { "Name": "JSON Streaming Step", "Args": ["-files","s3://elasticmapreduce/samples/wordcount/wordSplitter.py","-mapper","wordSplitter.py","-reducer","aggregate","-input","s3://elasticmapreduce/samples/wordcount/input","-output","s3://mybucket/wordcount/output"], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]
NOTE: JSON les arguments doivent inclure des options et des valeurs en tant qu'éléments propres dans la liste.
Commande (à l'aide de step.json) :
aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./step.json
Sortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
3. Pour ajouter une étape de streaming contenant plusieurs fichiers à un cluster (JSONuniquement)
JSON(multiplefiles.json) :
[ { "Name": "JSON Streaming Step", "Type": "STREAMING", "ActionOnFailure": "CONTINUE", "Args": [ "-files", "s3://mybucket/mapper.py,s3://mybucket/reducer.py", "-mapper", "mapper.py", "-reducer", "reducer.py", "-input", "s3://mybucket/input", "-output", "s3://mybucket/output"] } ]
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps file://./multiplefiles.json
Paramètres requis :
Type, Args
Paramètres facultatifs :
Name, ActionOnFailure
Sortie :
{ "StepIds":[ "s-XXXXXXXX", ] }
4. Pour ajouter des étapes Hive à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,Args=[-f,s3://mybucket/myhivescript.q,-d,INPUT=s3://mybucket/myhiveinput,-d,OUTPUT=s3://mybucket/myhiveoutput,arg1,arg2] Type=HIVE,Name='Hive steps',ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://mybucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs]
Paramètres requis :
Type, Args
Paramètres facultatifs :
Name, ActionOnFailure
Sortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
5. Pour ajouter des étapes Pig à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://mybucket/mypigscript.pig,-p,INPUT=s3://mybucket/mypiginput,-p,OUTPUT=s3://mybucket/mypigoutput,arg1,arg2] Type=PIG,Name='Pig program',Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://mybucket/pig-apache/output,arg1,arg2]
Paramètres requis :
Type, Args
Paramètres facultatifs :
Name, ActionOnFailure
Sortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
6. Pour ajouter des étapes Impala à un cluster
Commande :
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=IMPALA,Name='Impala program',ActionOnFailure=CONTINUE,Args=--impala-script,s3://myimpala/input,--console-output-path,s3://myimpala/output
Paramètres requis :
Type, Args
Paramètres facultatifs :
Name, ActionOnFailure
Sortie :
{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
-
Pour API plus de détails, voir AddSteps
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliseradd-tags
.
- AWS CLI
-
1. Pour ajouter des balises à un cluster
Commande :
aws emr add-tags --resource-id j-xxxxxxx --tags name="John Doe" age=29 sex=male address="123 East NW Seattle"
Sortie :
None
2. Pour répertorier les balises d'un cluster
--Commande :
aws emr describe-cluster --cluster-id
j-XXXXXXYY
--queryCluster.Tags
Sortie :
[ { "Value": "male", "Key": "sex" }, { "Value": "123 East NW Seattle", "Key": "address" }, { "Value": "John Doe", "Key": "name" }, { "Value": "29", "Key": "age" } ]
-
Pour API plus de détails, voir 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 EMR service Amazon et votre profil d'EC2instance Amazon. Si vous ne l'avez pas encore fait, vous devez spécifier chaque IAM rôle requis ou utiliser le
--use-default-roles
paramètre lors de la création de votre cluster. Pour plus d'informations sur la spécification IAM des rôles, consultez Configurer IAM les rôles pour Amazon EMR Permissions to AWS Services dans le guide EMR de gestion Amazon.Exemple 1 : pour créer un cluster
L'
create-cluster
exemple suivant crée un EMR cluster simple.aws emr create-cluster \ --release-label
emr-5.14.0
\ --instance-typem4.large
\ --instance-count2
Cette commande ne produit aucun résultat.
Exemple 2 : pour créer un EMR cluster Amazon avec des InstanceProfile rôles ServiceRole et des rôles par défaut
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise la--instance-groups
configuration.aws emr create-cluster \ --release-label
emr-5.14.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
Exemple 3 : pour créer un EMR cluster Amazon qui utilise un parc d'instances
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise la--instance-fleets
configuration, en spécifiant deux types d'instances pour chaque flotte et deux EC2 sous-réseaux.aws emr create-cluster \ --release-label
emr-5.14.0
\ --service-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'
create-cluster
exemple suivant utilise le--use-default-roles
paramètre pour spécifier le rôle de service et le profil d'instance par défaut.aws emr create-cluster \ --release-label
emr-5.9.0
\ --use-default-roles \ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateExemple 5 : pour créer un cluster et spécifier les applications à installer
L'
create-cluster
exemple suivant utilise le--applications
paramètre pour spécifier les applications EMR installées par Amazon. Cet exemple installe Hadoop, Hive et Pig.aws emr create-cluster \ --applications
Name=Hadoop
Name=Hive
Name=Pig
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=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-label
emr-5.9.0
\ --applicationsName=Spark
\ --ec2-attributesKeyName=myKey
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateExemple 7 : pour spécifier une personnalisation AMI à utiliser pour les instances de cluster
L'
create-cluster
exemple suivant crée une instance de cluster basée sur Amazon Linux AMI avec IDami-a518e6df
.aws emr create-cluster \ --name
"Cluster with My Custom AMI"
\ --custom-ami-idami-a518e6df
\ --ebs-root-volume-size20
\ --release-labelemr-5.9.0
\ --use-default-roles \ --instance-count2
\ --instance-typem4.large
Exemple 8 : Pour personnaliser les configurations des applications
Les exemples suivants utilisent le
--configurations
paramètre pour spécifier un fichier de JSON configuration contenant des personnalisations d'applications pour Hadoop. Pour plus d'informations, consultez la section Configuration des applications dans le Amazon EMR Release Guide.Contenu de
configurations.json
:[ { "Classification": "mapred-site", "Properties": { "mapred.tasktracker.map.tasks.maximum": 2 } }, { "Classification": "hadoop-env", "Properties": {}, "Configurations": [ { "Classification": "export", "Properties": { "HADOOP_DATANODE_HEAPSIZE": 2048, "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19" } } ] } ]
L'exemple suivant fait référence
configurations.json
à un fichier local.aws emr create-cluster \ --configurations
file://configurations.json
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateL'exemple suivant fait référence
configurations.json
à un fichier dans Amazon S3.aws emr create-cluster \ --configurations
https://s3.amazonaws.com/myBucket/configurations.json
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateExemple 9 : pour créer un cluster avec des groupes d'instances principaux, principaux et de tâches
L'
create-cluster
exemple suivant permet--instance-groups
de spécifier le type et le nombre d'EC2instances à utiliser pour les groupes d'instances principaux, principaux et de tâches.aws emr create-cluster \ --release-label
emr-5.9.0
\ --instance-groupsName=Master,InstanceGroupType=MASTER,InstanceType=m4.large,InstanceCount=1
Name=Core,InstanceGroupType=CORE,InstanceType=m4.large,InstanceCount=2
Name=Task,InstanceGroupType=TASK,InstanceType=m4.large,InstanceCount=2
Exemple 10 : Pour spécifier qu'un cluster doit se terminer une fois toutes les étapes terminées
L'
create-cluster
exemple suivant indique que le cluster doit s'arrêter automatiquement une fois toutes les étapes terminées.--auto-terminate
aws emr create-cluster \ --release-label
emr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=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-cluster
exemple suivant crée un cluster avec la paire de EC2 clés Amazon nomméemyKey
et un profil d'instance personnalisé nommémyProfile
. Les paires de clés sont utilisées pour autoriser SSH les connexions aux nœuds du cluster, le plus souvent au nœud maître. Pour plus d'informations, consultez la section Utiliser une paire de EC2 clés Amazon pour les SSH informations d'identification dans le guide EMR de gestion Amazon.aws emr create-cluster \ --ec2-attributes
KeyName=myKey,InstanceProfile=myProfile
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateL'exemple suivant crée un cluster dans un VPC sous-réseau Amazon.
aws emr create-cluster \ --ec2-attributes
SubnetId=subnet-xxxxx
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateL'exemple suivant crée un cluster dans la zone de
us-east-1b
disponibilité.aws emr create-cluster \ --ec2-attributes
AvailabilityZone=us-east-1b
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'exemple suivant crée un cluster et spécifie uniquement les groupes de sécurité EMR gérés par Amazon.
aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-rolemyServiceRole
\ --ec2-attributesInstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'exemple suivant crée un cluster et spécifie uniquement les groupes EC2 de sécurité Amazon supplémentaires.
aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-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.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'exemple suivant crée un cluster et spécifie les groupes de sécurité EMR -Managed, ainsi que des groupes de sécurité supplémentaires.
aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-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.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'exemple suivant crée un cluster dans un sous-réseau VPC privé et utilise un groupe de EC2 sécurité Amazon spécifique pour activer l'accès aux EMR services Amazon, ce qui est requis pour les clusters situés dans des sous-réseaux privés.
aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-rolemyServiceRole
\ --ec2-attributesInstanceProfile=myRole,ServiceAccessSecurityGroup=sg-service-access,EmrManagedMasterSecurityGroup=sg-master,EmrManagedSlaveSecurityGroup=sg-slave
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'exemple suivant spécifie les paramètres de configuration du groupe de sécurité à l'aide d'un JSON fichier nommé
ec2_attributes.json
qui est stocké localement. NOTE: JSON les arguments doivent inclure des options et des valeurs en tant qu'éléments propres dans la liste.aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-rolemyServiceRole
\ --ec2-attributesfile://ec2_attributes.json
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
Contenu de
ec2_attributes.json
:[ { "SubnetId": "subnet-xxxxx", "KeyName": "myKey", "InstanceProfile":"myRole", "EmrManagedMasterSecurityGroup": "sg-master1", "EmrManagedSlaveSecurityGroup": "sg-slave1", "ServiceAccessSecurityGroup": "sg-service-access", "AdditionalMasterSecurityGroups": ["sg-addMaster1","sg-addMaster2","sg-addMaster3","sg-addMaster4"], "AdditionalSlaveSecurityGroups": ["sg-addSlave1","sg-addSlave2","sg-addSlave3","sg-addSlave4"] } ]
Exemple 12 : Pour activer le débogage et spécifier un journal URI
L'
create-cluster
exemple suivant utilise le--enable-debugging
paramètre, qui vous permet d'afficher les fichiers journaux plus facilement à l'aide de l'outil de débogage de la EMR console Amazon. Le--log-uri
paramètre est obligatoire avec--enable-debugging
.aws emr create-cluster \ --enable-debugging \ --log-uri
s3://myBucket/myLog
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=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'
create-cluster
exemple suivant utilise le--tags
paramètre pour créer trois balises pour un cluster, une avec le nom de la cléname
et la valeurShirley Rodriguez
, une seconde avec le nom de la cléage
et la valeur29
, et une troisième balise avec le nom de la clédepartment
et la valeurAnalytics
.aws emr create-cluster \ --tags name="Shirley Rodriguez"
age=29
department="Analytics" \ --release-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-id
j-XXXXXXYY
\ --queryCluster.Tags
Exemple 14 : Pour utiliser une configuration de sécurité qui active le chiffrement et d'autres fonctionnalités de sécurité
L'
create-cluster
exemple suivant utilise le--security-configuration
paramètre pour spécifier une configuration de sécurité pour un EMR cluster. Vous pouvez utiliser des configurations de sécurité avec Amazon EMR version 4.8.0 ou ultérieure.aws emr create-cluster \ --instance-type
m4.large
\ --release-labelemr-5.9.0
\ --security-configurationmySecurityConfiguration
Exemple 15 : pour créer un cluster avec des volumes EBS de stockage supplémentaires configurés pour les groupes d'instances
Lorsque vous spécifiez des EBS volumes supplémentaires, les arguments suivants sont requis :
VolumeType
,SizeInGB
ifEbsBlockDeviceConfigs
est spécifié.L'
create-cluster
exemple suivant crée un cluster avec plusieurs EBS volumes attachés aux EC2 instances du groupe d'instances principal.aws emr create-cluster \ --release-label
emr-5.9.0
\ --use-default-roles \ --instance-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 EBS volumes attachés aux EC2 instances du groupe d'instances principal.
aws emr create-cluster \ --release-label
emr-5.9.0
\ --use-default-roles \ --instance-groups 'InstanceGroupType=MASTER, InstanceCount=1, InstanceType=d2.xlarge, EbsConfiguration={EbsOptimized=true, EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=io1, SizeInGB=100, Iops=100}},{VolumeSpecification={VolumeType=standard,SizeInGB=50},VolumesPerInstance=3}]}
'InstanceGroupType=CORE,InstanceCount=2,InstanceType=d2.xlarge
\ --auto-terminateExemple 16 : Pour créer un cluster avec une politique de dimensionnement automatique
Vous pouvez associer des politiques de dimensionnement automatique aux groupes d'instances principaux et aux groupes d'instances de tâches à l'aide d'Amazon EMR version 4.0 ou ultérieure. La politique de dimensionnement automatique ajoute et supprime des EC2 instances de manière dynamique en réponse à une CloudWatch métrique Amazon. Pour plus d'informations, consultez la section Utilisation du dimensionnement automatique dans Amazon EMR < https://docs.aws.amazon.com/emr/ latest/ManagementGuide/emr-automatic-scaling.html>`_ dans le guide de gestion Amazon. EMR
Lorsque vous associez une politique de dimensionnement automatique, vous devez également spécifier le rôle par défaut pour le dimensionnement automatique à l'aide de
--auto-scaling-role EMR_AutoScaling_DefaultRole
.L'
create-cluster
exemple suivant spécifie la politique de dimensionnement automatique pour le groupe d'CORE
instances à l'aide de l'AutoScalingPolicy
argument avec une JSON structure intégrée, qui spécifie la configuration de la politique de dimensionnement. Les groupes d'instances dotés d'une JSON structure intégrée doivent avoir l'ensemble des arguments entre guillemets simples. L'utilisation de guillemets simples est facultative pour les groupes d'instances sans JSON structure intégrée.aws emr create-cluster --release-label
emr-5.9.0
\ --use-default-roles --auto-scaling-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 JSON fichier pour spécifier la configuration de tous les groupes d'instances d'un cluster.
instancegroupconfig.json
Le JSON fichier spécifie la configuration de la politique de dimensionnement automatique pour le groupe d'instances principal.aws emr create-cluster \ --release-label
emr-5.9.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --instance-groupsfile://myfolder/instancegroupconfig.json
\ --auto-scaling-roleEMR_AutoScaling_DefaultRole
Contenu de
instancegroupconfig.json
:[ { "InstanceCount": 1, "Name": "MyMasterIG", "InstanceGroupType": "MASTER", "InstanceType": "m4.large" }, { "InstanceCount": 2, "Name": "MyCoreIG", "InstanceGroupType": "CORE", "InstanceType": "m4.large", "AutoScalingPolicy": { "Constraints": { "MinCapacity": 2, "MaxCapacity": 10 }, "Rules": [ { "Name": "Default-scale-out", "Description": "Replicates the default scale-out rule in the console for YARN memory.", "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger": { "CloudWatchAlarmDefinition": { "ComparisonOperator": "LESS_THAN", "EvaluationPeriods": 1, "MetricName": "YARNMemoryAvailablePercentage", "Namespace": "AWS/ElasticMapReduce", "Period": 300, "Threshold": 15, "Statistic": "AVERAGE", "Unit": "PERCENT", "Dimensions": [ { "Key": "JobFlowId", "Value": "${emr.clusterId}" } ] } } } ] } } ]
Exemple 17 : Ajouter des JAR étapes personnalisées lors de la création d'un cluster
L'
create-cluster
exemple suivant ajoute des étapes en spécifiant un JAR fichier stocké dans Amazon S3. Les étapes soumettent le travail à un cluster. La fonction principale définie dans le JAR fichier s'exécute après le provisionnement EC2 des instances, l'exécution de toutes les actions d'amorçage et l'installation des applications. Les étapes sont spécifiées à l'aide deType=CUSTOM_JAR
.Les JAR étapes personnalisées nécessitent le
Jar=
paramètre, qui spécifie le chemin et le nom de fichier duJAR. Les paramètres facultatifs sontType
Name
,ActionOnFailure
,Args
, etMainClass
. Si aucune classe principale n'est spécifiée, le JAR fichier doit le spécifierMain-Class
dans son fichier manifeste.aws emr create-cluster \ --steps
Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/mytest.jar,Args=arg1,arg2,arg3
Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3
\ --release-labelemr-5.3.1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateExemple 18 : Pour ajouter des étapes de streaming lors de la création d'un cluster
Les
create-cluster
exemples suivants ajoutent une étape de streaming à un cluster qui s'arrête une fois toutes les étapes exécutées. Les étapes de streaming nécessitent des paramètresType
etArgs
. Les paramètres facultatifs des étapes de diffusion sontName
etActionOnFailure
.L'exemple suivant indique l'étape en ligne.
aws emr create-cluster \ --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://mybucket/wordcount/output] \ --release-label
emr-5.3.1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateL'exemple suivant utilise un fichier de JSON configuration stocké localement nommé
multiplefiles.json
. La JSON configuration spécifie plusieurs fichiers. Pour spécifier plusieurs fichiers au cours d'une étape, vous devez utiliser un fichier JSON de configuration pour spécifier l'étape. JSONles arguments doivent inclure des options et des valeurs en tant qu'éléments propres dans la liste.aws emr create-cluster \ --steps
file://./multiplefiles.json
\ --release-labelemr-5.9.0
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=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://mybucket/wordcount/output" ], "ActionOnFailure": "CONTINUE", "Type": "STREAMING" } ]
Exemple 19 : Pour ajouter des étapes Hive lors de la création d'un cluster
L'exemple suivant ajoute les étapes Hive lors de la création d'un cluster. Les étapes de la ruche nécessitent des paramètres
Type
et.Args
Les paramètres optionnels des étapes de la ruche sontName
et.ActionOnFailure
aws emr create-cluster \ --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://mybucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs] \ --applications
Name=Hive
\ --release-labelemr-5.3.1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
Exemple 20 : Pour ajouter des étapes Pig lors de la création d'un cluster
L'exemple suivant ajoute des étapes Pig lors de la création d'un cluster. Les paramètres requis pour les étapes du porc sont
Type
etArgs
. Les paramètres optionnels de Pig Steps sontName
etActionOnFailure
.aws emr create-cluster \ --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://mybucket/pig-apache/output] \ --applications
Name=Pig
\ --release-labelemr-5.3.1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
Exemple 21 : Pour ajouter des actions bootstrap
L'
create-cluster
exemple suivant exécute deux actions bootstrap définies comme des scripts stockés dans Amazon S3.aws emr create-cluster \ --bootstrap-actions
Path=s3://mybucket/myscript1,Name=BootstrapAction1,Args=[arg1,arg2]
Path=s3://mybucket/myscript2,Name=BootstrapAction2,Args=[arg1,arg2]
\ --release-labelemr-5.3.1
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
\ --auto-terminateExemple 22 : Pour permettre un affichage EMRFS cohérent et personnaliser les RetryPeriod paramètres RetryCount et
L'
create-cluster
exemple suivant indique le nombre de tentatives et la période de nouvelles tentatives pour un affichage EMRFS cohérent. L'argumentConsistent=true
est obligatoire.aws emr create-cluster \ --instance-type
m4.large
\ --release-labelemr-5.9.0
\ --emrfsConsistent=true,RetryCount=6,RetryPeriod=30
L'exemple suivant spécifie la même EMRFS configuration que l'exemple précédent, à l'aide d'un fichier de JSON configuration stocké localement nommé
emrfsconfig.json
.aws emr create-cluster \ --instance-type
m4.large
\ --release-labelemr-5.9.0
\ --emrfsfile://emrfsconfig.json
Contenu de
emrfsconfig.json
:{ "Consistent": true, "RetryCount": 6, "RetryPeriod": 30 }
Exemple 23 : Pour créer un cluster avec Kerberos configuré
Les
create-cluster
exemples suivants créent un cluster à l'aide d'une configuration de sécurité avec Kerberos activé, et établissent les paramètres Kerberos pour le cluster à l'aide de ce dernier.--kerberos-attributes
La commande suivante spécifie les attributs Kerberos du cluster en ligne.
aws emr create-cluster \ --instance-type
m3.xlarge
\ --release-labelemr-5.10.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --security-configurationmySecurityConfiguration
\ --kerberos-attributesRealm=EC2.INTERNAL,KdcAdminPassword=123,CrossRealmTrustPrincipalPassword=123
La commande suivante spécifie les mêmes attributs, mais fait référence à un JSON fichier stocké localement nommé
kerberos_attributes.json
. Dans cet exemple, le fichier est enregistré dans le répertoire où vous exécutez la commande. Vous pouvez également référencer un fichier de configuration enregistré dans Amazon S3.aws emr create-cluster \ --instance-type
m3.xlarge
\ --release-labelemr-5.10.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --security-configurationmySecurityConfiguration
\ --kerberos-attributesfile://kerberos_attributes.json
Contenu de
kerberos_attributes.json
:{ "Realm": "EC2.INTERNAL", "KdcAdminPassword": "123", "CrossRealmTrustPrincipalPassword": "123", }
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise la--instance-groups
configuration et dispose d'une politique de dimensionnement gérée.aws emr create-cluster \ --release-label
emr-5.30.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
--managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=2,MaximumCapacityUnits=4,UnitType=Instances}'L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise le « -- log-encryption-kms-key -id » pour définir l'ID de KMS clé utilisé pour le chiffrement des journaux.aws emr create-cluster \ --release-label
emr-5.30.0
\ --log-uris3://myBucket/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.large
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise la configuration « -- placement-group-configs » pour placer des nœuds maîtres dans un cluster à haute disponibilité (HA) au sein d'un groupe de EC2 placement à l'aide d'une stratégie deSPREAD
placement.aws emr create-cluster \ --release-label
emr-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=MASTER
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise la configuration « -- auto-termination-policy » pour définir un seuil de fin d'inactivité automatique pour le cluster.aws emr create-cluster \ --release-label
emr-5.34.0
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large
\ --auto-termination-policyIdleTimeout=100
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise le « -- os-release-label » pour définir une version Amazon Linux pour le lancement du clusteraws emr create-cluster \ --release-label
emr-6.6.0
\ --os-release-label2.0.20220406.1
\ --service-roleEMR_DefaultRole
\ --ec2-attributesInstanceProfile=EMR_EC2_DefaultRole
\ --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large
InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large
Exemple 24 : Pour spécifier les attributs d'un volume EBS racine : taille, E/S par seconde et débit pour les instances de cluster créées avec les EMR versions 6.15.0 et ultérieures
L'
create-cluster
exemple suivant crée un EMR cluster Amazon qui utilise les attributs du volume racine pour configurer les spécifications des volumes racines pour les EC2 instances.aws emr create-cluster \ --name
"Cluster with My Custom AMI"
\ --custom-ami-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 API plus de détails, 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 IAM rôle par défaut pour EC2
Commande :
aws emr create-default-roles
Sortie :
If the role already exists then the command returns nothing. If the role does not exist then the output will be: [ { "RolePolicy": { "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSteps", "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:MergeShards", "kinesis:PutRecord", "kinesis:SplitShard", "rds:Describe*", "s3:*", "sdb:*", "sns:*", "sqs:*" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version": "2008-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROAIQ5SIQUGL5KMYBJX6", "CreateDate": "2015-06-09T17:09:04.602Z", "RoleName": "EMR_EC2_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_EC2_DefaultRole" } }, { "RolePolicy": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeKeyPairs", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RunInstances", "ec2:TerminateInstances", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRolePolicies", "iam:PassRole", "s3:CreateBucket", "s3:Get*", "s3:List*", "sdb:BatchPutAttributes", "sdb:Select", "sqs:CreateQueue", "sqs:Delete*", "sqs:GetQueue*", "sqs:ReceiveMessage" ], "Resource": "*", "Effect": "Allow" } ] }, "Role": { "AssumeRolePolicyDocument": { "Version": "2008-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Sid": "", "Effect": "Allow", "Principal": { "Service": "elasticmapreduce.amazonaws.com" } } ] }, "RoleId": "AROAI3SRVPPVSRDLARBPY", "CreateDate": "2015-06-09T17:09:10.401Z", "RoleName": "EMR_DefaultRole", "Path": "/", "Arn": "arn:aws:iam::176430881729:role/EMR_DefaultRole" } } ]
-
Pour API plus de détails, voir 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 le fournisseur de certificats, et le chiffrement au repos activé avec SSE -S3 pour le chiffrement S3 et AWS- KMS pour le fournisseur de clé de disque local
Commande :
aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "EncryptionConfiguration": { "EnableInTransitEncryption" : true, "EnableAtRestEncryption" : true, "InTransitEncryptionConfiguration" : { "TLSCertificateConfiguration" : { "CertificateProviderType" : "PEM", "S3Object" : "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration" : { "S3EncryptionConfiguration" : { "EncryptionMode" : "SSE-S3" }, "LocalDiskEncryptionConfiguration" : { "EncryptionKeyProviderType" : "AwsKms", "AwsKmsKey" : "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }'
Sortie :
{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }
JSONéquivalent (contenu de security_configuration.json) :
{ "EncryptionConfiguration": { "EnableInTransitEncryption": true, "EnableAtRestEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://mycertstore/artifacts/MyCerts.zip" } }, "AtRestEncryptionConfiguration": { "S3EncryptionConfiguration": { "EncryptionMode": "SSE-S3" }, "LocalDiskEncryptionConfiguration": { "EncryptionKeyProviderType": "AwsKms", "AwsKmsKey": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } } } }
Commande (à l'aide de security_configuration.json) :
aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json
Sortie :
{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }
2. Pour créer une configuration de sécurité avec Kerberos activé à l'aide de la confiance dédiée au cluster KDC et entre domaines
Commande :
aws emr create-security-configuration --name MySecurityConfig --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'
Sortie :
{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }
JSONéquivalent (contenu de security_configuration.json) :
{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }
Commande (à l'aide de security_configuration.json) :
aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json
Sortie :
{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }
-
Pour API plus de détails, 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 MySecurityConfig
Sortie :
None
-
Pour API plus de détails, 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-XXXXXXXX
Sortie :
For release-label based uniform instance groups cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1436475075.199, "CreationDateTime": 1436474656.563, }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "ServiceAccessSecurityGroup": "sg-xxxxxxxx", "EmrManagedMasterSecurityGroup": "sg-xxxxxxxx", "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2KeyName": "myKey", "Ec2AvailabilityZone": "us-east-1c", "EmrManagedSlaveSecurityGroup": "sg-yyyyyyyyy" }, "Name": "My Cluster", "ServiceRole": "EMR_DefaultRole", "Tags": [], "TerminationProtected": true, "UnhealthyNodeReplacement": true, "ReleaseLabel": "emr-4.0.0", "NormalizedInstanceHours": 96, "InstanceGroups": [ { "RequestedInstanceCount": 2, "Status": { "Timeline": { "ReadyDateTime": 1436475074.245, "CreationDateTime": 1436474656.564, "EndDateTime": 1436638158.387 }, "State": "RUNNING", "StateChangeReason": { "Message": "", } }, "Name": "CORE", "InstanceGroupType": "CORE", "Id": "ig-YYYYYYY", "Configurations": [], "InstanceType": "m3.large", "Market": "ON_DEMAND", "RunningInstanceCount": 2 }, { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1436475074.245, "CreationDateTime": 1436474656.564, "EndDateTime": 1436638158.387 }, "State": "RUNNING", "StateChangeReason": { "Message": "", } }, "Name": "MASTER", "InstanceGroupType": "MASTER", "Id": "ig-XXXXXXXXX", "Configurations": [], "InstanceType": "m3.large", "Market": "ON_DEMAND", "RunningInstanceCount": 1 } ], "Applications": [ { "Name": "Hadoop" } ], "VisibleToAllUsers": true, "BootstrapActions": [], "MasterPublicDnsName": "ec2-54-147-144-78.compute-1.amazonaws.com", "AutoTerminate": false, "Id": "j-XXXXXXXX", "Configurations": [ { "Properties": { "fs.s3.consistent.retryPeriodSeconds": "20", "fs.s3.enableServerSideEncryption": "true", "fs.s3.consistent": "false", "fs.s3.consistent.retryCount": "2" }, "Classification": "emrfs-site" } ] } } For release-label based instance fleet cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1487897289.705, "CreationDateTime": 1487896933.942 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "EmrManagedMasterSecurityGroup": "sg-xxxxx", "RequestedEc2AvailabilityZones": [], "RequestedEc2SubnetIds": [], "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2AvailabilityZone": "us-east-1a", "EmrManagedSlaveSecurityGroup": "sg-xxxxx" }, "Name": "My Cluster", "ServiceRole": "EMR_DefaultRole", "Tags": [], "TerminationProtected": false, "UnhealthyNodeReplacement": false, "ReleaseLabel": "emr-5.2.0", "NormalizedInstanceHours": 472, "InstanceCollectionType": "INSTANCE_FLEET", "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1487897212.74, "CreationDateTime": 1487896933.948 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 1, "Name": "MASTER", "InstanceFleetType": "MASTER", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "TargetSpotCapacity": 1, "ProvisionedOnDemandCapacity": 0, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-xxxxxxx", "TargetOnDemandCapacity": 0 } ], "Applications": [ { "Version": "2.7.3", "Name": "Hadoop" } ], "ScaleDownBehavior": "TERMINATE_AT_INSTANCE_HOUR", "VisibleToAllUsers": true, "BootstrapActions": [], "MasterPublicDnsName": "ec2-xxx-xx-xxx-xx.compute-1.amazonaws.com", "AutoTerminate": false, "Id": "j-xxxxx", "Configurations": [] } } For ami based uniform instance group cluster: { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1399400564.432, "CreationDateTime": 1399400268.62 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting for steps to run" } }, "Ec2InstanceAttributes": { "IamInstanceProfile": "EMR_EC2_DefaultRole", "Ec2AvailabilityZone": "us-east-1c" }, "Name": "My Cluster", "Tags": [], "TerminationProtected": true, "UnhealthyNodeReplacement": true, "RunningAmiVersion": "2.5.4", "InstanceGroups": [ { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1399400558.848, "CreationDateTime": 1399400268.621 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "Master instance group", "InstanceGroupType": "MASTER", "InstanceType": "m1.small", "Id": "ig-ABCD", "Market": "ON_DEMAND", "RunningInstanceCount": 1 }, { "RequestedInstanceCount": 2, "Status": { "Timeline": { "ReadyDateTime": 1399400564.439, "CreationDateTime": 1399400268.621 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "Core instance group", "InstanceGroupType": "CORE", "InstanceType": "m1.small", "Id": "ig-DEF", "Market": "ON_DEMAND", "RunningInstanceCount": 2 } ], "Applications": [ { "Version": "1.0.3", "Name": "hadoop" } ], "BootstrapActions": [], "VisibleToAllUsers": false, "RequestedAmiVersion": "2.4.2", "LogUri": "s3://myLogUri/", "AutoTerminate": false, "Id": "j-XXXXXXXX" } }
-
Pour API plus de détails, voir DescribeCluster
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserdescribe-step
.
- AWS CLI
-
La commande suivante décrit une étape avec l'ID d'étape
s-3LZC0QUT43AM
dans un cluster avec l'ID de clusterj-3SD91U2E1L2QX
:aws emr describe-step --cluster-id
j-3SD91U2E1L2QX
--step-ids-3LZC0QUT43AM
Sortie :
{ "Step": { "Status": { "Timeline": { "EndDateTime": 1433200470.481, "CreationDateTime": 1433199926.597, "StartDateTime": 1433200404.959 }, "State": "COMPLETED", "StateChangeReason": {} }, "Config": { "Args": [ "s3://us-west-2.elasticmapreduce/libs/hive/hive-script", "--base-path", "s3://us-west-2.elasticmapreduce/libs/hive/", "--install-hive", "--hive-versions", "0.13.1" ], "Jar": "s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar", "Properties": {} }, "Id": "s-3LZC0QUT43AM", "ActionOnFailure": "TERMINATE_CLUSTER", "Name": "Setup hive" } }
-
Pour API plus de détails, voir DescribeStep
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserget
.
- AWS CLI
-
Ce qui suit télécharge l'
hadoop-examples.jar
archive depuis l'instance principale dans un cluster avec l'ID du clusterj-3SD91U2E1L2QX
:aws emr get --cluster-id
j-3SD91U2E1L2QX
--key-pair-file~/.ssh/mykey.pem
--src/home/hadoop-examples.jar
--dest~
-
Pour API plus de détails, voir Get
in AWS CLI Command Reference.
-
L'exemple de code suivant montre comment utiliserlist-clusters
.
- AWS CLI
-
La commande suivante répertorie tous les EMR clusters actifs de la région actuelle :
aws emr list-clusters --active
Sortie :
{ "Clusters": [ { "Status": { "Timeline": { "ReadyDateTime": 1433200405.353, "CreationDateTime": 1433199926.596 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 6, "Id": "j-3SD91U2E1L2QX", "Name": "my-cluster" } ] }
-
Pour API plus de détails, voir ListClusters
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserlist-instance-fleets
.
- AWS CLI
-
Pour obtenir les détails de configuration des flottes d'instances d'un cluster
Cet exemple répertorie les détails des flottes d'instances du cluster spécifié.
Commande :
list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'
Sortie :
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m3.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m3.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }
-
Pour API plus de détails, 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 du cluster
j-3C6XNQ39VR9WL
:aws emr list-instances --cluster-id
j-3C6XNQ39VR9WL
Sortie :
For a uniform instance group based cluster { "Instances": [ { "Status": { "Timeline": { "ReadyDateTime": 1433200400.03, "CreationDateTime": 1433199960.152 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-f19ecfee", "PublicDnsName": "ec2-52-52-41-150.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-21-11-216.us-west-2.compute.internal", "PublicIpAddress": "52.52.41.150", "Id": "ci-3NNHQUQ2TWB6Y", "PrivateIpAddress": "172.21.11.216" }, { "Status": { "Timeline": { "ReadyDateTime": 1433200400.031, "CreationDateTime": 1433199949.102 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-1feee4c2", "PublicDnsName": "ec2-52-63-246-32.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-31-24-130.us-west-2.compute.internal", "PublicIpAddress": "52.63.246.32", "Id": "ci-GAOCMKNKDCV7", "PrivateIpAddress": "172.21.11.215" }, { "Status": { "Timeline": { "ReadyDateTime": 1433200400.031, "CreationDateTime": 1433199949.102 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-15cfeee3", "PublicDnsName": "ec2-52-25-246-63.us-west-2.compute.amazonaws.com", "PrivateDnsName": "ip-172-31-24-129.us-west-2.compute.internal", "PublicIpAddress": "52.25.246.63", "Id": "ci-2W3TDFFB47UAD", "PrivateIpAddress": "172.21.11.214" } ] } For a fleet based cluster: { "Instances": [ { "Status": { "Timeline": { "ReadyDateTime": 1487810810.878, "CreationDateTime": 1487810588.367, "EndDateTime": 1488022990.924 }, "State": "TERMINATED", "StateChangeReason": { "Message": "Instance was terminated." } }, "Ec2InstanceId": "i-xxxxx", "InstanceFleetId": "if-xxxxx", "EbsVolumes": [], "PublicDnsName": "ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com", "InstanceType": "m3.xlarge", "PrivateDnsName": "ip-xx-xx-xxx-xx.ec2.internal", "Market": "SPOT", "PublicIpAddress": "xx.xx.xxx.xxx", "Id": "ci-xxxxx", "PrivateIpAddress": "10.47.191.80" } ] }
-
Pour API plus de détails, voir ListInstances
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserlist-security-configurations
.
- AWS CLI
-
Pour répertorier les configurations de sécurité dans la région actuelle
Commande :
aws emr list-security-configurations
Sortie :
{ "SecurityConfigurations": [ { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-1" }, { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-2" } ] }
-
Pour API plus de détails, 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 du cluster
j-3SD91U2E1L2QX
:aws emr list-steps --cluster-id
j-3SD91U2E1L2QX
-
Pour API plus de détails, 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 EMR cluster avec l'ID
j-301CDNY0J5XM4
pour tous les utilisateurs :aws emr modify-cluster-attributes --cluster-id
j-301CDNY0J5XM4
--visible-to-all-users-
Pour API plus de détails, 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'un parc d'instances
Cet exemple modifie les capacités cibles On-Demand et Spot à 1 pour le parc d'instances spécifié.
Commande :
aws emr modify-instance-fleet --cluster-id '
j-12ABCDEFGHI34JK
' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1-
Pour API plus de détails, voir ModifyInstanceFleet
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utiliserput
.
- AWS CLI
-
La commande suivante télécharge un fichier nommé
healthcheck.sh
sur l'instance principale d'un cluster avec l'ID du cluster :j-3SD91U2E1L2QX
aws emr put --cluster-id
j-3SD91U2E1L2QX
--key-pair-file~/.ssh/mykey.pem
--src~/scripts/healthcheck.sh
--dest/home/hadoop/bin/healthcheck.sh
-
Pour API plus de détails, voir Put
in AWS CLI Command Reference.
-
L'exemple de code suivant montre comment utiliserremove-tags
.
- AWS CLI
-
La commande suivante supprime une balise contenant la clé
prod
d'un cluster portant l'ID du clusterj-3SD91U2E1L2QX
:aws emr remove-tags --resource-id
j-3SD91U2E1L2QX
--tag-keysprod
-
Pour API plus de détails, 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 AMI versions 2.x et 3.x
1. Pour planifier une HBase sauvegarde complète >>>>>> 06ab6d6e13564b5733d75abaf3b599f93cf39a23
Commande :
aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type full --dir s3://myBucket/backup --interval 10 --unit hours --start-time 2014-04-21T05:26:10Z --consistent
Sortie :
None
2. Pour planifier une sauvegarde incrémentielle HBase
Commande :
aws emr schedule-hbase-backup --cluster-id j-XXXXXXYY --type incremental --dir s3://myBucket/backup --interval 30 --unit minutes --start-time 2014-04-21T05:26:10Z --consistent
Sortie :
None
-
Pour API plus de détails, voir ScheduleHbaseBackup
la section Référence des AWS CLI commandes.
-
L'exemple de code suivant montre comment utilisersocks
.
- AWS CLI
-
La commande suivante ouvre une connexion Socks avec l'instance principale d'un cluster portant l'ID du cluster
j-3SD91U2E1L2QX
:aws emr socks --cluster-id
j-3SD91U2E1L2QX
--key-pair-file~/.ssh/mykey.pem
L'option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.
-
Pour API plus de détails, voir Socks
dans AWS CLI Command Reference.
-
L'exemple de code suivant montre comment utiliserssh
.
- AWS CLI
-
La commande suivante ouvre une connexion SSH avec l'instance principale d'un cluster portant l'ID du cluster :
j-3SD91U2E1L2QX
aws emr ssh --cluster-id
j-3SD91U2E1L2QX
--key-pair-file~/.ssh/mykey.pem
L'option de fichier de paires de clés utilise un chemin local vers un fichier de clé privée.
Sortie :
ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=10 -i /home/local/user/.ssh/mykey.pem hadoop@ec2-52-52-41-150.us-west-2.compute.amazonaws.com Warning: Permanently added 'ec2-52-52-41-150.us-west-2.compute.amazonaws.com,52.52.41.150' (ECDSA) to the list of known hosts. Last login: Mon Jun 1 23:15:38 2015 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 26 package(s) needed for security, out of 39 available Run "sudo yum update" to apply all updates. -------------------------------------------------------------------------------- Welcome to Amazon Elastic MapReduce running Hadoop and Amazon Linux. Hadoop is installed in /home/hadoop. Log files are in /mnt/var/log/hadoop. Check /mnt/var/log/hadoop/steps for diagnosing step failures. The Hadoop UI can be accessed via the following commands: ResourceManager lynx http://ip-172-21-11-216:9026/ NameNode lynx http://ip-172-21-11-216:9101/ -------------------------------------------------------------------------------- [hadoop@ip-172-31-16-216 ~]$
-
Pour API plus de détails, voir Ssh
dans AWS CLI Command Reference.
-