EMRAmazon-Beispiele mit AWS CLI - AWS Command Line Interface

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

EMRAmazon-Beispiele mit AWS CLI

Die folgenden Codebeispiele zeigen Ihnen, wie Sie mithilfe von AWS Command Line Interface mit Amazon Aktionen ausführen und allgemeine Szenarien implementierenEMR.

Aktionen sind Codeauszüge aus größeren Programmen und müssen im Kontext ausgeführt werden. Aktionen zeigen Ihnen zwar, wie Sie einzelne Servicefunktionen aufrufen, aber Sie können Aktionen im Kontext der zugehörigen Szenarien sehen.

Jedes Beispiel enthält einen Link zum vollständigen Quellcode, in dem Sie Anweisungen zum Einrichten und Ausführen des Codes im Kontext finden.

Themen

Aktionen

Das folgende Codebeispiel zeigt die Verwendungadd-instance-fleet.

AWS CLI

Um einem Cluster eine Task-Instance-Flotte hinzuzufügen

In diesem Beispiel wird dem angegebenen Cluster eine neue Task-Instance-Flotte hinzugefügt.

Befehl:

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}']

Ausgabe:

{ "ClusterId": "j-12ABCDEFGHI34JK", "InstanceFleetId": "if-23ABCDEFGHI45JJ" }

Das folgende Codebeispiel zeigt die Verwendungadd-steps.

AWS CLI

1. Um benutzerdefinierte JAR Schritte zu einem Cluster hinzuzufügen

Befehl:

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

Erforderliche Parameter:

Jar

Optionale Parameter:

Type, Name, ActionOnFailure, Args

Ausgabe:

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

2. Um Streaming-Schritte zu einem Cluster hinzuzufügen

Befehl:

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]

Erforderliche Parameter:

Type, Args

Optionale Parameter:

Name, ActionOnFailure

JSONÄquivalent (Inhalt von 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 Argumente müssen Optionen und Werte als eigene Elemente in der Liste enthalten.

Befehl (mit step.json):

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

Ausgabe:

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

3. Um einen Streaming-Schritt mit mehreren Dateien zu einem Cluster hinzuzufügen (JSONnur)

JSON(mehrere Dateien.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"] } ]

Befehl:

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

Erforderliche Parameter:

Type, Args

Optionale Parameter:

Name, ActionOnFailure

Ausgabe:

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

4. Um Hive-Schritte zu einem Cluster hinzuzufügen

Befehl:

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]

Erforderliche Parameter:

Type, Args

Optionale Parameter:

Name, ActionOnFailure

Ausgabe:

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

5. Um Pig-Schritte zu einem Cluster hinzuzufügen

Befehl:

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]

Erforderliche Parameter:

Type, Args

Optionale Parameter:

Name, ActionOnFailure

Ausgabe:

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

6. Um Impala-Schritte zu einem Cluster hinzuzufügen

Befehl:

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

Erforderliche Parameter:

Type, Args

Optionale Parameter:

Name, ActionOnFailure

Ausgabe:

{ "StepIds":[ "s-XXXXXXXX", "s-YYYYYYYY" ] }
  • APIEinzelheiten finden Sie AddStepsin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungadd-tags.

AWS CLI

1. Um Tags zu einem Cluster hinzuzufügen

Befehl:

aws emr add-tags --resource-id j-xxxxxxx --tags name="John Doe" age=29 sex=male address="123 East NW Seattle"

Ausgabe:

None

2. Um die Tags eines Clusters aufzulisten

--Befehl:

aws emr describe-cluster --cluster-id j-XXXXXXYY --query Cluster.Tags

Ausgabe:

[ { "Value": "male", "Key": "sex" }, { "Value": "123 East NW Seattle", "Key": "address" }, { "Value": "John Doe", "Key": "name" }, { "Value": "29", "Key": "age" } ]
  • APIEinzelheiten finden Sie AddTagsin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungcreate-cluster-examples.

AWS CLI

In den meisten der folgenden Beispiele wird davon ausgegangen, dass Sie Ihre EMR Amazon-Servicerolle und Ihr EC2 Amazon-Instance-Profil angegeben haben. Wenn Sie dies nicht getan haben, müssen Sie jede erforderliche IAM Rolle angeben oder den --use-default-roles Parameter bei der Erstellung Ihres Clusters verwenden. Weitere Informationen zur Angabe von IAM Rollen finden Sie unter Configure IAM Roles for Amazon EMR Permissions to AWS Services im Amazon EMR Management Guide.

Beispiel 1: Um einen Cluster zu erstellen

Das folgende create-cluster Beispiel erstellt einen einfachen EMR Cluster.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Beispiel 2: So erstellen Sie einen EMR Amazon-Cluster mit Standard ServiceRole und InstanceProfile Rollen

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der die --instance-groups Konfiguration verwendet.

aws emr create-cluster \ --release-label emr-5.14.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Beispiel 3: So erstellen Sie einen EMR Amazon-Cluster, der eine Instance-Flotte verwendet

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der die --instance-fleets Konfiguration verwendet und zwei Instance-Typen für jede Flotte und zwei EC2 Subnetze angibt.

aws emr create-cluster \ --release-label emr-5.14.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m4.large}'] InstanceFleetType=CORE,TargetSpotCapacity=11,InstanceTypeConfigs=['{InstanceType=m4.large,BidPrice=0.5,WeightedCapacity=3}','{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}

Beispiel 4: Um einen Cluster mit Standardrollen zu erstellen

Im folgenden create-cluster Beispiel wird der --use-default-roles Parameter verwendet, um die Standarddienstrolle und das Instanzprofil anzugeben.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 5: Um einen Cluster zu erstellen und die zu installierenden Anwendungen anzugeben

Im folgenden create-cluster Beispiel wird der --applications Parameter verwendet, um die Anwendungen anzugeben, die Amazon EMR installiert. In diesem Beispiel werden Hadoop, Hive und Pig installiert.

aws emr create-cluster \ --applications Name=Hadoop Name=Hive Name=Pig \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 6: Um einen Cluster zu erstellen, der Spark enthält

Im folgenden Beispiel wird Spark installiert.

aws emr create-cluster \ --release-label emr-5.9.0 \ --applications Name=Spark \ --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 7: Um einen benutzerdefinierten Wert anzugebenAMI, der für Cluster-Instanzen verwendet werden soll

Das folgende create-cluster Beispiel erstellt eine Cluster-Instance, die auf Amazon Linux AMI mit ID basiertami-a518e6df.

aws emr create-cluster \ --name "Cluster with My Custom AMI" \ --custom-ami-id ami-a518e6df \ --ebs-root-volume-size 20 \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-count 2 \ --instance-type m4.large

Beispiel 8: Um Anwendungskonfigurationen anzupassen

In den folgenden Beispielen --configurations wird der Parameter verwendet, um eine JSON Konfigurationsdatei anzugeben, die Anwendungsanpassungen für Hadoop enthält. Weitere Informationen finden Sie unter Configuring Applications im EMRAmazon-Versionshandbuch.

Inhalt von 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" } } ] } ]

Das folgende Beispiel verweist auf configurations.json eine lokale Datei.

aws emr create-cluster \ --configurations file://configurations.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Das folgende Beispiel verweist auf configurations.json eine Datei in Amazon S3.

aws emr create-cluster \ --configurations https://s3.amazonaws.com/myBucket/configurations.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 9: Um einen Cluster mit Master-, Core- und Task-Instance-Gruppen zu erstellen

Im folgenden create-cluster Beispiel werden Typ und Anzahl der EC2 Instanzen angegeben, die für Master-, Core- und Task-Instanzgruppen verwendet --instance-groups werden sollen.

aws emr create-cluster \ --release-label emr-5.9.0 \ --instance-groups Name=Master,InstanceGroupType=MASTER,InstanceType=m4.large,InstanceCount=1 Name=Core,InstanceGroupType=CORE,InstanceType=m4.large,InstanceCount=2 Name=Task,InstanceGroupType=TASK,InstanceType=m4.large,InstanceCount=2

Beispiel 10: Um anzugeben, dass ein Cluster nach Abschluss aller Schritte beendet werden soll

Im folgenden create-cluster Beispiel wird --auto-terminate angegeben, dass der Cluster nach Abschluss aller Schritte automatisch heruntergefahren werden soll.

aws emr create-cluster \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 11: Um Cluster-Konfigurationsdetails wie das EC2 Amazon-Schlüsselpaar, die Netzwerkkonfiguration und Sicherheitsgruppen anzugeben

Im folgenden create-cluster Beispiel wird ein Cluster mit dem Namen des EC2 Amazon-Schlüsselpaars myKey und einem benutzerdefinierten Instance-Profil mit dem Namen erstelltmyProfile. Schlüsselpaare werden verwendet, um SSH Verbindungen zu Clusterknoten, meistens zum Master-Knoten, zu autorisieren. Weitere Informationen finden Sie unter Verwenden eines EC2 Amazon-Schlüsselpaars für SSH Anmeldeinformationen im Amazon EMR Management Guide.

aws emr create-cluster \ --ec2-attributes KeyName=myKey,InstanceProfile=myProfile \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Das folgende Beispiel erstellt einen Cluster in einem VPC Amazon-Subnetz.

aws emr create-cluster \ --ec2-attributes SubnetId=subnet-xxxxx \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Im folgenden Beispiel wird ein Cluster in der us-east-1b Availability Zone erstellt.

aws emr create-cluster \ --ec2-attributes AvailabilityZone=us-east-1b \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Im folgenden Beispiel wird ein Cluster erstellt und nur die von Amazon EMR verwalteten Sicherheitsgruppen angegeben.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Das folgende Beispiel erstellt einen Cluster und spezifiziert nur zusätzliche EC2 Amazon-Sicherheitsgruppen.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,AdditionalMasterSecurityGroups=[sg-addMaster1,sg-addMaster2,sg-addMaster3,sg-addMaster4],AdditionalSlaveSecurityGroups=[sg-addSlave1,sg-addSlave2,sg-addSlave3,sg-addSlave4] \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Das folgende Beispiel erstellt einen Cluster und spezifiziert die EMR -verwalteten Sicherheitsgruppen sowie zusätzliche Sicherheitsgruppen.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,EmrManagedMasterSecurityGroup=sg-master1,EmrManagedSlaveSecurityGroup=sg-slave1,AdditionalMasterSecurityGroups=[sg-addMaster1,sg-addMaster2,sg-addMaster3,sg-addMaster4],AdditionalSlaveSecurityGroups=[sg-addSlave1,sg-addSlave2,sg-addSlave3,sg-addSlave4] \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Das folgende Beispiel erstellt einen Cluster in einem VPC privaten Subnetz und verwendet eine bestimmte EC2 Amazon-Sicherheitsgruppe, um den EMR Amazon-Servicezugriff zu aktivieren, der für Cluster in privaten Subnetzen erforderlich ist.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes InstanceProfile=myRole,ServiceAccessSecurityGroup=sg-service-access,EmrManagedMasterSecurityGroup=sg-master,EmrManagedSlaveSecurityGroup=sg-slave \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Im folgenden Beispiel werden die Konfigurationsparameter für Sicherheitsgruppen mithilfe einer lokal gespeicherten JSON Datei mit ec2_attributes.json dem Namen angegeben. NOTE: JSON Argumente müssen Optionen und Werte als eigene Elemente in der Liste enthalten.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role myServiceRole \ --ec2-attributes file://ec2_attributes.json \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Inhalt von 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"] } ]

Beispiel 12: Um das Debuggen zu aktivieren und ein Protokoll anzugeben URI

Im folgenden create-cluster Beispiel wird der --enable-debugging Parameter verwendet, mit dem Sie Protokolldateien mithilfe des Debugging-Tools in der EMR Amazon-Konsole einfacher anzeigen können. Der --log-uri Parameter ist mit --enable-debugging erforderlich.

aws emr create-cluster \ --enable-debugging \ --log-uri s3://myBucket/myLog \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 13: Um beim Erstellen eines Clusters Tags hinzuzufügen

Tags sind Schlüssel-Wert-Paare, die Ihnen helfen, Cluster zu identifizieren und zu verwalten. Im folgenden create-cluster Beispiel wird der --tags Parameter verwendet, um drei Tags für einen Cluster zu erstellen, eines mit dem Schlüsselnamen name und dem WertShirley Rodriguez, ein zweites mit dem Schlüsselnamen age und dem Wert 29 und ein drittes Tag mit dem Schlüsselnamen department und dem Wert. Analytics

aws emr create-cluster \ --tags name="Shirley Rodriguez" age=29 department="Analytics" \ --release-label emr-5.32.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --use-default-roles

Das folgende Beispiel listet die auf einen Cluster angewendeten Tags auf.

aws emr describe-cluster \ --cluster-id j-XXXXXXYY \ --query Cluster.Tags

Beispiel 14: Um eine Sicherheitskonfiguration zu verwenden, die Verschlüsselung und andere Sicherheitsfunktionen aktiviert

Im folgenden create-cluster Beispiel wird der --security-configuration Parameter verwendet, um eine Sicherheitskonfiguration für einen EMR Cluster anzugeben. Sie können Sicherheitskonfigurationen mit EMR Amazon-Version 4.8.0 oder höher verwenden.

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --security-configuration mySecurityConfiguration

Beispiel 15: Um einen Cluster mit zusätzlichen EBS Speichervolumes zu erstellen, die für die Instanzgruppen konfiguriert sind

Bei der Angabe zusätzlicher EBS Volumes sind die folgenden Argumente erforderlich:VolumeType, SizeInGB if EbsBlockDeviceConfigs ist angegeben.

Im folgenden create-cluster Beispiel wird ein Cluster mit mehreren EBS Volumes erstellt, die an EC2 Instances in der Core-Instanzgruppe angehängt sind.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=d2.xlarge 'InstanceGroupType=CORE,InstanceCount=2,InstanceType=d2.xlarge,EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,SizeInGB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iops=100},VolumesPerInstance=4}]}' \ --auto-terminate

Im folgenden Beispiel wird ein Cluster mit mehreren EBS Volumes erstellt, die an EC2 Instanzen in der Master-Instanzgruppe angehängt sind.

aws emr create-cluster \ --release-label emr-5.9.0 \ --use-default-roles \ --instance-groups 'InstanceGroupType=MASTER, InstanceCount=1, InstanceType=d2.xlarge, EbsConfiguration={EbsOptimized=true, EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=io1, SizeInGB=100, Iops=100}},{VolumeSpecification={VolumeType=standard,SizeInGB=50},VolumesPerInstance=3}]}' InstanceGroupType=CORE,InstanceCount=2,InstanceType=d2.xlarge \ --auto-terminate

Beispiel 16: Um einen Cluster mit einer automatischen Skalierungsrichtlinie zu erstellen

Mit Amazon EMR Version 4.0 und höher können Sie automatische Skalierungsrichtlinien an Kern- und Task-Instance-Gruppen anhängen. Die automatische Skalierungsrichtlinie fügt EC2 Instances als Reaktion auf eine CloudWatch Amazon-Metrik dynamisch hinzu und entfernt sie. Weitere Informationen finden Sie unter Using Automatic Scaling in Amazon EMR < https://docs.aws.amazon.com/emr/ latest/ManagementGuide/emr -automatic-scaling.html>`_ im Amazon Management Guide. EMR

Wenn Sie eine automatische Skalierungsrichtlinie anhängen, müssen Sie auch die Standardrolle für die automatische Skalierung angeben. --auto-scaling-role EMR_AutoScaling_DefaultRole

Das folgende create-cluster Beispiel spezifiziert die automatische Skalierungsrichtlinie für die CORE Instanzgruppe mithilfe des AutoScalingPolicy Arguments mit einer eingebetteten JSON Struktur, die die Konfiguration der Skalierungsrichtlinie spezifiziert. Bei Instanzgruppen mit einer eingebetteten JSON Struktur muss die gesamte Sammlung von Argumenten in einfache Anführungszeichen eingeschlossen sein. Die Verwendung von einfachen Anführungszeichen ist für Instanzgruppen ohne eingebettete JSON Struktur optional.

aws emr create-cluster --release-label emr-5.9.0 \ --use-default-roles --auto-scaling-role EMR_AutoScaling_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceType=d2.xlarge,InstanceCount=1 'InstanceGroupType=CORE,InstanceType=d2.xlarge,InstanceCount=2,AutoScalingPolicy={Constraints={MinCapacity=1,MaxCapacity=5},Rules=[{Name=TestRule,Description=TestDescription,Action={Market=ON_DEMAND,SimpleScalingPolicyConfiguration={AdjustmentType=EXACT_CAPACITY,ScalingAdjustment=2}},Trigger={CloudWatchAlarmDefinition={ComparisonOperator=GREATER_THAN,EvaluationPeriods=5,MetricName=TestMetric,Namespace=EMR,Period=3,Statistic=MAXIMUM,Threshold=4.5,Unit=NONE,Dimensions=[{Key=TestKey,Value=TestValue}]}}}]}'

Im folgenden Beispiel wird eine JSON Datei,instancegroupconfig.json, verwendet, um die Konfiguration aller Instanzgruppen in einem Cluster anzugeben. Die JSON Datei spezifiziert die Konfiguration der automatischen Skalierungsrichtlinie für die Kerninstanzgruppe.

aws emr create-cluster \ --release-label emr-5.9.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups file://myfolder/instancegroupconfig.json \ --auto-scaling-role EMR_AutoScaling_DefaultRole

Inhalt von 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}" } ] } } } ] } } ]

Beispiel 17: Fügen Sie beim Erstellen eines Clusters benutzerdefinierte JAR Schritte hinzu

Im folgenden create-cluster Beispiel werden Schritte hinzugefügt, indem eine in Amazon S3 gespeicherte JAR Datei angegeben wird. Die Schritte leiten die Arbeit an einen Cluster weiter. Die in der JAR Datei definierte Hauptfunktion wird ausgeführt, nachdem EC2 Instanzen bereitgestellt, alle Bootstrap-Aktionen ausgeführt und Anwendungen installiert wurden. Die Schritte werden mit angegeben. Type=CUSTOM_JAR

Für benutzerdefinierte JAR Schritte ist der Jar= Parameter erforderlich, der den Pfad und den Dateinamen von angibtJAR. Optionale Parameter sind TypeName,ActionOnFailure,Args, undMainClass. Wenn die Hauptklasse nicht angegeben ist, sollte die JAR Datei dies Main-Class in ihrer Manifestdatei angeben.

aws emr create-cluster \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myBucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3 \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 18: Um Streaming-Schritte beim Erstellen eines Clusters hinzuzufügen

In den folgenden create-cluster Beispielen wird einem Cluster ein Streaming-Schritt hinzugefügt, der beendet wird, nachdem alle Schritte ausgeführt wurden. Streaming-Schritte erfordern Parameter Type undArgs. Die optionalen Parameter für Streaming-Schritte sind Name undActionOnFailure.

Das folgende Beispiel spezifiziert den Inline-Schritt.

aws emr create-cluster \ --steps Type=STREAMING,Name='Streaming Program',ActionOnFailure=CONTINUE,Args=[-files,s3://elasticmapreduce/samples/wordcount/wordSplitter.py,-mapper,wordSplitter.py,-reducer,aggregate,-input,s3://elasticmapreduce/samples/wordcount/input,-output,s3://mybucket/wordcount/output] \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Im folgenden Beispiel wird eine lokal gespeicherte JSON Konfigurationsdatei mit dem Namen verwendetmultiplefiles.json. Die JSON Konfiguration spezifiziert mehrere Dateien. Um mehrere Dateien innerhalb eines Schritts anzugeben, müssen Sie eine JSON Konfigurationsdatei verwenden, um den Schritt anzugeben. JSONArgumente müssen Optionen und Werte als eigene Elemente in der Liste enthalten.

aws emr create-cluster \ --steps file://./multiplefiles.json \ --release-label emr-5.9.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Inhalt von 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" } ]

Beispiel 19: So fügen Sie beim Erstellen eines Clusters Hive-Schritte hinzu

Im folgenden Beispiel werden beim Erstellen eines Clusters Hive-Schritte hinzugefügt. Hive-Schritte erfordern Parameter Type und. Args Die optionalen Parameter für Hive-Schritte sind Name und. ActionOnFailure

aws emr create-cluster \ --steps Type=HIVE,Name='Hive program',ActionOnFailure=CONTINUE,ActionOnFailure=TERMINATE_CLUSTER,Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/model-build.q,-d,INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://mybucket/hive-ads/output/2014-04-18/11-07-32,-d,LIBS=s3://elasticmapreduce/samples/hive-ads/libs] \ --applications Name=Hive \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Beispiel 20: Um Pig-Schritte beim Erstellen eines Clusters hinzuzufügen

Im folgenden Beispiel werden Pig-Schritte hinzugefügt, wenn ein Cluster erstellt wird. Die erforderlichen Parameter für Pig-Schritte sind Type undArgs. Die optionalen Parameter für Pig-Schritte sind Name undActionOnFailure.

aws emr create-cluster \ --steps Type=PIG,Name='Pig program',ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://mybucket/pig-apache/output] \ --applications Name=Pig \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Beispiel 21: Um Bootstrap-Aktionen hinzuzufügen

Im folgenden create-cluster Beispiel werden zwei Bootstrap-Aktionen ausgeführt, die als Skripts definiert sind und in Amazon S3 gespeichert sind.

aws emr create-cluster \ --bootstrap-actions Path=s3://mybucket/myscript1,Name=BootstrapAction1,Args=[arg1,arg2] Path=s3://mybucket/myscript2,Name=BootstrapAction2,Args=[arg1,arg2] \ --release-label emr-5.3.1 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large \ --auto-terminate

Beispiel 22: Um eine EMRFS konsistente Ansicht zu ermöglichen und die Einstellungen für RetryCount und RetryPeriod anzupassen

Im folgenden create-cluster Beispiel werden die Anzahl der Wiederholungen und der Wiederholungszeitraum für eine EMRFS konsistente Ansicht angegeben. Das Argument Consistent=true ist erforderlich.

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --emrfs Consistent=true,RetryCount=6,RetryPeriod=30

Im folgenden Beispiel wird dieselbe EMRFS Konfiguration wie im vorherigen Beispiel angegeben, wobei eine lokal gespeicherte JSON Konfigurationsdatei mit dem Namen verwendet wird. emrfsconfig.json

aws emr create-cluster \ --instance-type m4.large \ --release-label emr-5.9.0 \ --emrfs file://emrfsconfig.json

Inhalt von emrfsconfig.json:

{ "Consistent": true, "RetryCount": 6, "RetryPeriod": 30 }

Beispiel 23: Um einen Cluster mit konfiguriertem Kerberos zu erstellen

In den folgenden create-cluster Beispielen wird ein Cluster mithilfe einer Sicherheitskonfiguration mit aktiviertem Kerberos erstellt und Kerberos-Parameter für den verwendeten Cluster eingerichtet. --kerberos-attributes

Mit dem folgenden Befehl werden Kerberos-Attribute für den Inline-Cluster angegeben.

aws emr create-cluster \ --instance-type m3.xlarge \ --release-label emr-5.10.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --security-configuration mySecurityConfiguration \ --kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=123,CrossRealmTrustPrincipalPassword=123

Der folgende Befehl gibt dieselben Attribute an, verweist jedoch auf eine lokal gespeicherte JSON Datei mit dem Namen. kerberos_attributes.json In diesem Beispiel wird die Datei in demselben Verzeichnis gespeichert, in dem Sie den Befehl ausführen. Sie können auch auf eine in Amazon S3 gespeicherte Konfigurationsdatei verweisen.

aws emr create-cluster \ --instance-type m3.xlarge \ --release-label emr-5.10.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --security-configuration mySecurityConfiguration \ --kerberos-attributes file://kerberos_attributes.json

Inhalt von kerberos_attributes.json:

{ "Realm": "EC2.INTERNAL", "KdcAdminPassword": "123", "CrossRealmTrustPrincipalPassword": "123", }

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der die --instance-groups Konfiguration verwendet und über eine verwaltete Skalierungsrichtlinie verfügt.

aws emr create-cluster \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large --managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=2,MaximumCapacityUnits=4,UnitType=Instances}'

Das folgende create-cluster Beispiel erstellt einen EMR Amazon-Cluster, der die „-- log-encryption-kms-key -id“ verwendet, um die KMS Schlüssel-ID zu definieren, die für die Protokollverschlüsselung verwendet wird.

aws emr create-cluster \ --release-label emr-5.30.0 \ --log-uri s3://myBucket/myLog \ --log-encryption-kms-key-id arn:aws:kms:us-east-1:110302272565:key/dd559181-283e-45d7-99d1-66da348c4d33 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der die Konfiguration „--placement-group-configs“ verwendet, um Master-Knoten mithilfe einer Platzierungsstrategie in einem Hochverfügbarkeitscluster (HA) innerhalb einer EC2 Platzierungsgruppe zu SPREAD platzieren.

aws emr create-cluster \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=3,InstanceType=m4.largeInstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large \ --placement-group-configs InstanceRole=MASTER

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der die Konfiguration „--auto-termination-policy“ verwendet, um einen Schwellenwert für die automatische Beendigung des Leerlaufs für den Cluster festzulegen.

aws emr create-cluster \ --release-label emr-5.34.0 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large \ --auto-termination-policy IdleTimeout=100

Das folgende create-cluster Beispiel erstellt einen EMR Amazon-Cluster, der „--os-release-label“ verwendet, um eine Amazon Linux-Version für den Clusterstart zu definieren

aws emr create-cluster \ --release-label emr-6.6.0 \ --os-release-label 2.0.20220406.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=1,InstanceType=m4.large

Beispiel 24: So geben Sie die Attribute eines EBS Root-Volumes an: Größe, IOPS und Durchsatz für Cluster-Instances, die mit den EMR Versionen 6.15.0 und höher erstellt wurden

Im folgenden create-cluster Beispiel wird ein EMR Amazon-Cluster erstellt, der Root-Volume-Attribute verwendet, um Root-Volume-Spezifikationen für die EC2 Instances zu konfigurieren.

aws emr create-cluster \ --name "Cluster with My Custom AMI" \ --custom-ami-id ami-a518e6df \ --ebs-root-volume-size 20 \ --ebs-root-volume-iops 3000 \ --ebs-root-volume-throughput 125 \ --release-label emr-6.15.0 \ --use-default-roles \ --instance-count 2 \ --instance-type m4.large

Das folgende Codebeispiel zeigt die Verwendungcreate-default-roles.

AWS CLI

1. Um die IAM Standardrolle für zu erstellen EC2

Befehl:

aws emr create-default-roles

Ausgabe:

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" } } ]

Das folgende Codebeispiel zeigt die Verwendungcreate-security-configuration.

AWS CLI

1. Um eine Sicherheitskonfiguration zu erstellen, bei der die Verschlüsselung während der Übertragung PEM für den Zertifikatsanbieter und die Verschlüsselung im Ruhezustand mit SSE -S3 für die S3-Verschlüsselung und AWS- KMS für den lokalen Festplattenschlüsselanbieter aktiviert ist

Befehl:

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" } } } }'

Ausgabe:

{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }

JSONÄquivalent (Inhalt von 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" } } } }

Befehl (mit security_configuration.json):

aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json

Ausgabe:

{ "CreationDateTime": 1474070889.129, "Name": "MySecurityConfig" }

2. Um eine Sicherheitskonfiguration mit aktiviertem Kerberos mithilfe von KDC Cluster-Dedicated und Cross-Realm Trust zu erstellen

Befehl:

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" } } } } }'

Ausgabe:

{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }

JSONÄquivalent (Inhalt von 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" } } } } }

Befehl (mit security_configuration.json):

aws emr create-security-configuration --name "MySecurityConfig" --security-configuration file://./security_configuration.json

Ausgabe:

{ "CreationDateTime": 1490225558.982, "Name": "MySecurityConfig" }

Das folgende Codebeispiel zeigt die Verwendungdelete-security-configuration.

AWS CLI

Um eine Sicherheitskonfiguration in der aktuellen Region zu löschen

Befehl:

aws emr delete-security-configuration --name MySecurityConfig

Ausgabe:

None

Das folgende Codebeispiel zeigt die Verwendungdescribe-cluster.

AWS CLI

Befehl:

aws emr describe-cluster --cluster-id j-XXXXXXXX

Ausgabe:

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" } }
  • APIEinzelheiten finden Sie DescribeClusterin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungdescribe-step.

AWS CLI

Der folgende Befehl beschreibt einen Schritt mit der Schritt-ID s-3LZC0QUT43AM in einem Cluster mit der Cluster-IDj-3SD91U2E1L2QX:

aws emr describe-step --cluster-id j-3SD91U2E1L2QX --step-id s-3LZC0QUT43AM

Ausgabe:

{ "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" } }
  • APIEinzelheiten finden Sie DescribeStepin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungget.

AWS CLI

Im Folgenden wird das hadoop-examples.jar Archiv von der Master-Instance in einem Cluster mit der Cluster-ID heruntergeladenj-3SD91U2E1L2QX:

aws emr get --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem --src /home/hadoop-examples.jar --dest ~
  • APIEinzelheiten finden Sie unter Get in AWS CLI Command Reference.

Das folgende Codebeispiel zeigt die Verwendunglist-clusters.

AWS CLI

Der folgende Befehl listet alle aktiven EMR Cluster in der aktuellen Region auf:

aws emr list-clusters --active

Ausgabe:

{ "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" } ] }
  • APIEinzelheiten finden Sie ListClustersin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendunglist-instance-fleets.

AWS CLI

Um Konfigurationsdetails von Instance-Flotten in einem Cluster abzurufen

In diesem Beispiel werden die Details der Instanzflotten im angegebenen Cluster aufgeführt.

Befehl:

list-instance-fleets --cluster-id 'j-12ABCDEFGHI34JK'

Ausgabe:

{ "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" } ] }

Das folgende Codebeispiel zeigt die Verwendunglist-instances.

AWS CLI

Der folgende Befehl listet alle Instances in einem Cluster mit der Cluster-ID aufj-3C6XNQ39VR9WL:

aws emr list-instances --cluster-id j-3C6XNQ39VR9WL

Ausgabe:

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" } ] }
  • APIEinzelheiten finden Sie ListInstancesin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendunglist-security-configurations.

AWS CLI

Um Sicherheitskonfigurationen in der aktuellen Region aufzulisten

Befehl:

aws emr list-security-configurations

Ausgabe:

{ "SecurityConfigurations": [ { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-1" }, { "CreationDateTime": 1473889697.417, "Name": "MySecurityConfig-2" } ] }

Das folgende Codebeispiel zeigt die Verwendunglist-steps.

AWS CLI

Der folgende Befehl listet alle Schritte in einem Cluster mit der Cluster-ID aufj-3SD91U2E1L2QX:

aws emr list-steps --cluster-id j-3SD91U2E1L2QX
  • APIEinzelheiten finden Sie ListStepsin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungmodify-cluster-attributes.

AWS CLI

Mit dem folgenden Befehl wird die Sichtbarkeit eines EMR Clusters mit der ID j-301CDNY0J5XM4 für alle Benutzer festgelegt:

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

Das folgende Codebeispiel zeigt die Verwendungmodify-instance-fleet.

AWS CLI

Um die Zielkapazitäten einer Instance-Flotte zu ändern

In diesem Beispiel werden die Zielkapazitäten On-Demand und Spot für die angegebene Instance-Flotte auf 1 geändert.

Befehl:

aws emr modify-instance-fleet --cluster-id 'j-12ABCDEFGHI34JK' --instance-fleet InstanceFleetId='if-2ABC4DEFGHIJ4',TargetOnDemandCapacity=1,TargetSpotCapacity=1

Das folgende Codebeispiel zeigt die Verwendungput.

AWS CLI

Der folgende Befehl lädt eine Datei mit dem Namen healthcheck.sh auf die Master-Instance in einem Cluster mit der Cluster-ID j-3SD91U2E1L2QX hoch:

aws emr put --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem --src ~/scripts/healthcheck.sh --dest /home/hadoop/bin/healthcheck.sh
  • APIEinzelheiten finden Sie unter AWS CLI Befehlsreferenz einfügen.

Das folgende Codebeispiel zeigt die Verwendungremove-tags.

AWS CLI

Der folgende Befehl entfernt ein Tag mit dem Schlüssel prod aus einem Cluster mit der Cluster-IDj-3SD91U2E1L2QX:

aws emr remove-tags --resource-id j-3SD91U2E1L2QX --tag-keys prod
  • APIEinzelheiten finden Sie RemoveTagsin der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungschedule-hbase-backup.

AWS CLI

Hinweis: Dieser Befehl kann nur mit HBase AMI Version 2.x und 3.x verwendet werden

1. Um ein vollständiges HBase Backup zu planen >>>>>>> 06ab6d6e13564b5733d75abaf3b599f93cf39a23

Befehl:

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

Ausgabe:

None

2. Um ein inkrementelles Backup HBase zu planen

Befehl:

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

Ausgabe:

None

Das folgende Codebeispiel zeigt die Verwendungsocks.

AWS CLI

Der folgende Befehl öffnet eine Socks-Verbindung mit der Master-Instance in einem Cluster mit der Cluster-IDj-3SD91U2E1L2QX:

aws emr socks --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem

Die Option Schlüsselpaardatei verwendet einen lokalen Pfad zu einer privaten Schlüsseldatei.

  • APIEinzelheiten finden Sie unter Socks in der AWS CLI Befehlsreferenz.

Das folgende Codebeispiel zeigt die Verwendungssh.

AWS CLI

Der folgende Befehl öffnet eine SSH-Verbindung mit der Master-Instance in einem Cluster mit der Cluster-ID: j-3SD91U2E1L2QX

aws emr ssh --cluster-id j-3SD91U2E1L2QX --key-pair-file ~/.ssh/mykey.pem

Die Option Schlüsselpaardatei verwendet einen lokalen Pfad zu einer privaten Schlüsseldatei.

Ausgabe:

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 ~]$
  • APIEinzelheiten finden Sie unter Ssh in der AWS CLI Befehlsreferenz.