Erstellen von Bootstrap-Aktionen zur Installation zusätzlicher Software - Amazon EMR

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.

Erstellen von Bootstrap-Aktionen zur Installation zusätzlicher Software

Sie können eine Bootstrap-Aktion verwenden, um zusätzliche Software zu installieren oder die Konfiguration von Cluster-Instances anzupassen. Bootstrap-Aktionen sind Skripte, die auf dem Cluster ausgeführt werden, nachdem Amazon die Instance mit dem Amazon Linux Amazon Machine Image (AMI) EMR gestartet hat. Bootstrap-Aktionen werden ausgeführt, bevor Amazon die Anwendungen EMR installiert, die Sie bei der Erstellung des Clusters angeben, und bevor die Clusterknoten mit der Datenverarbeitung beginnen. Wenn Sie einem aktiven Cluster Knoten hinzufügen, werden die Bootstrap-Aktionen auf diesen Knoten auch auf die gleiche Weise ausgeführt. Sie können benutzerdefinierte Bootstrap-Aktionen erstellen und sie beim Erstellen Ihres Clusters angeben.

Die meisten vordefinierten Bootstrap-Aktionen für die EMR AMI Amazon-Versionen 2.x und 3.x werden in den EMR Amazon-Versionen 4.x nicht unterstützt. Zum Beispiel configure-Hadoop und configure-daemons werden in EMR Amazon-Version 4.x nicht unterstützt. Stattdessen bietet Amazon EMR Release 4.x diese Funktionalität nativ. Weitere Informationen zur Migration von Bootstrap-Aktionen von den EMR AMI Amazon-Versionen 2.x und 3.x auf EMR Amazon-Version 4.x finden Sie unter Anpassen der Cluster- und Anwendungskonfiguration mit früheren AMI Versionen von Amazon EMR im Amazon-Versionshandbuch. EMR

Bootstrap-Aktionen – Grundlagen

Bootstrap-Aktionen werden standardmäßig als Hadoop-Benutzer ausgeführt. Sie können eine Bootstrap-Aktion mit Root-Berechtigungen ausführen, indem Sie sudo verwenden.

Alle EMR Amazon-Verwaltungsoberflächen unterstützen Bootstrap-Aktionen. Sie können bis zu 16 Bootstrap-Aktionen pro Cluster angeben, indem Sie mehrere bootstrap-actions Parameter von der Konsole aus angeben, AWS CLI, oder. API

In der EMR Amazon-Konsole können Sie optional eine Bootstrap-Aktion angeben, während Sie einen Cluster erstellen.

Wenn Sie den verwendenCLI, können Sie Verweise auf Bootstrap-Aktionsskripte an Amazon übergeben, EMR indem Sie den --bootstrap-actions Parameter hinzufügen, wenn Sie den Cluster mithilfe des create-cluster Befehls erstellen.

--bootstrap-actions Path="s3://mybucket/filename",Args=[arg1,arg2]

Wenn die Bootstrap-Aktion einen Fehlercode ungleich Null zurückgibt, EMR behandelt Amazon dies als Fehler und beendet die Instance. Wenn zu viele Instances ihre Bootstrap-Aktionen nicht erfolgreich ausführen, EMR beendet Amazon den Cluster. Wenn nur einige Instances ausfallen, EMR versucht Amazon, die ausgefallenen Instances neu zuzuweisen und fortzufahren. Verwenden Sie den Cluster-Fehlercode lastStateChangeReason, um Fehler zu identifizieren, die durch eine Bootstrap-Aktion verursacht wurden.

Eine bedingte eine Bootstrap-Aktion ausführen

Um Bootstrap-Aktionen nur auf dem Hauptknoten auszuführen, können Sie eine benutzerdefinierte Bootstrap-Aktion mit etwas Logik verwenden, um festzustellen, ob es sich bei dem Knoten um einen Hauptknoten handelt.

#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below

Die folgende Ausgabe wird von einem Core-Knoten aus gedruckt.

This is not master node, do nothing, exiting

Die folgende Ausgabe wird vom Hauptknoten aus gedruckt.

This is master, continuing to execute script

Um diese Logik zu verwenden, laden Sie Ihre Bootstrap-Aktion, einschließlich des obigen Codes, in Ihren Amazon-S3-Bucket hoch. Fügen Sie auf der AWS CLI den aws emr create-cluster API Aufruf den --bootstrap-actions Parameter hinzu und geben Sie den Speicherort Ihres Bootstrap-Skripts als Wert von an. Path

Aktionen beim Herunterfahren

Ein Bootstrap-Aktionsskript kann eine oder mehrere Shutdown-Aktionen durchführen, indem es Skripts in das Verzeichnis /mnt/var/lib/instance-controller/public/shutdown-actions/ schreibt. Wenn ein Cluster beendet wird, werden alle Skripts in diesem Verzeichnis parallel ausgeführt. Jedes Skript muss innerhalb von 60 Sekunden ausgeführt und abgeschlossen werden.

Es wird nicht garantiert, dass Shutdown-Aktionsskripts ausgeführt werden, wenn der Knoten mit einem Fehler beendet wird.

Anmerkung

Wenn Sie EMR Amazon-Versionen 4.0 und höher verwenden, müssen Sie das /mnt/var/lib/instance-controller/public/shutdown-actions/ Verzeichnis auf dem Master-Knoten manuell erstellen. Es ist standardmäßig zwar nicht vorhanden, nach Erstellung werden die Skripts in diesem Verzeichnis aber trotzdem vor dem Herunterfahren ausgeführt. Weitere Informationen zum Herstellen einer Verbindung mit dem Master-Knoten zum Erstellen von Verzeichnissen finden Sie unter Connect zum Primärknoten her mit SSH.

Benutzerdefinierte Bootstrap-Aktionen verwenden

Sie können ein benutzerdefiniertes Skript erstellen, um eine angepasste Bootstrap-Aktion auszuführen. Jede der EMR Amazon-Schnittstellen kann auf eine benutzerdefinierte Bootstrap-Aktion verweisen.

Anmerkung

Für eine optimale Leistung empfehlen wir, benutzerdefinierte Bootstrap-Aktionen, -Skripts und andere Dateien, die Sie mit Amazon verwenden möchten, EMR in einem Amazon S3 S3-Bucket zu speichern, der sich in demselben AWS-Region Cluster befindet.

Benutzerdefinierte Bootstrap-Aktionen hinzufügen

Console
Um mit der Konsole einen Cluster mit einer Bootstrap-Aktion zu erstellen
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die EMR Amazon-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie EC2 im linken Navigationsbereich unter EMRon die Option Clusters und anschließend Create cluster aus.

  3. Wählen Sie unter Bootstrap-Aktionen die Option Hinzufügen aus, um einen Namen, einen Skriptspeicherort und optionale Argumente für Ihre Aktion anzugeben. Wählen Sie Bootstrap-Aktion hinzufügen aus.

  4. Fügen Sie optional weitere Bootstrap-Aktionen hinzu.

  5. Wählen Sie alle anderen Optionen aus, die für Ihren Cluster gelten.

  6. Um Ihren Cluster jetzt zu starten, wählen Sie Cluster erstellen aus.

CLI
Um einen Cluster mit einer benutzerdefinierten Bootstrap-Aktion zu erstellen, verwenden Sie AWS CLI

Wenn Sie die Aktion AWS CLI zum Einbeziehen einer Bootstrap-Aktion verwenden, geben Sie Path und Args als kommagetrennte Liste an. Bei dem folgenden Beispiel wird keine Argumentliste verwendet.

  • Um einen Cluster mit einer benutzerdefinierten Bootstrap-Aktion zu starten, geben Sie den folgenden Befehl ein und ersetzen myKey mit dem Namen Ihres EC2 key pair. Fügen Sie --bootstrap-actions als Parameter ein und geben Sie den Speicherort Ihres Bootstrap-Skripts als Wert von Path an.

    • Linux UNIX - und Mac OS X-Benutzer:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    • Windows-Nutzer:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"

    Wenn Sie die Instance-Anzahl ohne den --instance-groups-Parameter angeben, wird ein einzelner Primärknoten gestartet. Die verbleibenden Instances werden dabei als Core-Knoten gestartet. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.

    Anmerkung

    Wenn Sie noch nicht die standardmäßige EMR Amazon-Servicerolle und das EC2 Instanzprofil erstellt haben, geben Sie ein, aws emr create-default-roles um sie zu erstellen, bevor Sie den create-cluster Unterbefehl eingeben.

    Weitere Informationen zur Verwendung von EMR Amazon-Befehlen in der AWS CLI finden Sie unterhttps://docs.aws.amazon.com/cli/latest/reference/emr.

Verwenden einer benutzerdefinierten Bootstrap-Aktion zum Kopieren eines Objekts aus Amazon S3 in jeden Knoten

Sie können mit einer Bootstrap-Aktion Objekte von Amazon S3 in jeden Knoten eines Cluster kopieren, bevor Ihre Anwendungen installiert werden. Der AWS CLI ist auf jedem Knoten eines Clusters installiert, sodass Ihre Bootstrap-Aktion AWS CLI Befehle aufrufen kann.

Das folgende Beispiel zeigt ein einfaches Skript für eine Bootstrap-Aktion, die die Datei myfile.jar aus Amazon S3 zum lokalen Ordner /mnt1/myfolder auf jedem Cluster-Knoten kopiert. Das Skript wird mit dem Dateinamen copymyfile.sh in Amazon S3 mit den folgenden Inhalten gespeichert.

#!/bin/bash aws s3 cp s3://mybucket/myfilefolder/myfile.jar /mnt1/myfolder

Wenn Sie den Cluster starten, geben Sie das Skript an. Das folgende AWS CLI Beispiel verdeutlicht dies:

aws emr create-cluster --name "Test cluster" --release-label emr-7.2.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://mybucket/myscriptfolder/copymyfile.sh"