Verwalten von Aufgabenläufen mit dem AWS CLI - 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.

Verwalten von Aufgabenläufen mit dem AWS CLI

Auf dieser Seite wird beschrieben, wie Aufgabenausführungen mit dem AWS Command Line Interface (AWS CLI) verwaltet werden.

Optionen für die Konfiguration einer Aufgabenausführung

Verwenden Sie die folgenden Optionen, um die Aufgaben-Ausführungsparameter zu konfigurieren:

  • --execution-role-arn: Sie müssen eine IAM-Rolle angeben, die für die Ausführung von Aufgaben verwendet wird. Weitere Informationen finden Sie unter Auftragausführungsrollen mit Amazon EMR in EKS verwenden.

  • --release-label: Sie können Amazon EMR in EKS mit den Amazon-EMR-Versionen 5.32.0 und 6.2.0 und höher bereitstellen. Amazon EMR in EKS wird in früheren Amazon-EMR-Release-Versionen nicht unterstützt. Weitere Informationen finden Sie unter Versionen von Amazon EMR in EKS.

  • --job-driver: Der Auftrag-Treiber wird verwendet, um Eingaben für die Hauptaufgabe bereitzustellen. Dies ist ein Feld vom Typ Union, in das Sie nur einen der Werte für den Aufgabentyp übergeben können, den Sie ausführen möchten. Unterstützte Aufgabentypen sind:

    • Spark-Submit-Aufgaben - Wird verwendet, um einen Befehl über Spark-Submit auszuführen. Sie können diesen Aufgabentyp verwenden, um Scala, PySpark, SparkR, SparkSQL und alle anderen unterstützten Aufgaben über Spark-Submit auszuführen. Dieser Aufgabentyp hat die folgenden Parameter:

      • Entrypoint – Dies ist der HCFS-Verweis (Hadoop Compatible File System) auf die Jar/PY-Hauptdatei, die Sie ausführen möchten.

      • EntryPointArguments - Dies ist eine Reihe von Argumenten, die Sie an Ihre Jar/PY-Hauptdatei übergeben möchten. Sie sollten das Lesen dieser Parameter mit Ihrem Einstiegspunkt-Code regeln. Jedes Argument im Array muss durch ein Komma getrennt werden. EntryPointArguments dürfen keine Klammern oder Klammern wie (), {} oder [] enthalten.

      • SparkSubmitParameters - Dies sind die zusätzlichen Spark-Parameter, die Sie an den Auftrag senden möchten. Verwenden Sie diesen Parameter, um Spark-Standardeigenschaften wie Treiberspeicher oder Anzahl der Ausführer wie -conf oder -class zu überschreiben. Weitere Informationen finden Sie unter Starten von Anwendungen mit Spark-Submit.

    • Spark-SQL-Aufträge – Wird verwendet, um eine SQL-Abfragedatei über Spark SQL auszuführen. Sie können diesen Auftragtyp verwenden, um SparkSQL-Aufträge auszuführen. Dieser Aufgabentyp hat die folgenden Parameter:

      • Einstiegspunkt – Dies ist der HCFS-Verweis (Hadoop Compatible File System) auf die SQL-Abfragedatei, die Sie ausführen möchten.

        Eine Liste zusätzlicher Spark-Parameter, die Sie für einen Spark-SQL-Auftrag verwenden können, finden Sie unter Ausführen von Spark-SQL-Skripts über die StartJobRun-API.

  • --configuration-overrides: Sie können die Standardkonfigurationen für die Anwendungen überschreiben, indem Sie ein Konfigurationsobjekt angeben. Sie können eine Syntax-Kurznotation verwenden, um die Konfiguration anzugeben oder Sie können auf die Konfiguration in einer JSON-Datei zu verweisen. Konfigurationsobjekte bestehen aus einer Klassifizierung, Eigenschaften und optionalen verschachtelten Konfigurationen. Eigenschaften bestehen aus den Einstellungen, die Sie in dieser Datei überschreiben möchten. Sie können mehrere Klassifizierungen für mehrere Anwendungen in einem einzigen JSON-Objekt angeben. Die verfügbaren Konfigurationsklassifizierungen variieren je nach Amazon-EMR-Version. Eine Liste der Konfigurationsklassifizierungen, die für jede Version von Amazon EMR verfügbar sind, finden Sie unter Versionen von Amazon EMR in EKS.

    Wenn Sie dieselbe Konfiguration in einer Anwendungsüberschreibung und in den Spark-Submit-Parametern übergeben, haben die Spark-Submit-Parameter Vorrang. Es folgt die vollständige Liste der Konfigurationsprioritäten, in der Reihenfolge von höchster Priorität bis niedrigster Priorität.

    • Konfiguration, die bei der Erstellung von SparkSession angegeben wurde.

    • Die Konfiguration wurde im Rahmen der sparkSubmitParameters unter —conf-Verwendung bereitgestellt.

    • Konfiguration, die im Rahmen von Anwendungsüberschreibungen bereitgestellt wird.

    • Optimierte Konfigurationen, die von Amazon EMR für die Veröffentlichung ausgewählt wurden.

    • Open-Source-Standardkonfigurationen für die Anwendung.

    Um Aufgabenausführungen mit Amazon CloudWatch oder Amazon S3 zu überwachen, müssen Sie die Konfigurationsdetails für CloudWatch angeben. Weitere Informationen finden Sie unter Eine Aufgabenausführung für die Verwendung von Amazon-S3-Protokollen konfigurieren und Einen Aufgabenlauf für die Verwendung von Amazon CloudWatch Logs konfigurieren. Wenn der S3-Bucket oder die CloudWatch-Protokollgruppe nicht existiert, erstellt Amazon EMR sie, bevor die Protokolle in den Bucket hochgeladen werden.

  • Eine zusätzliche Liste der Kubernetes-Konfigurationsoptionen finden Sie unter Spark-Eigenschaften auf Kubernetes.

    Die folgenden Spark-Konfigurationen werden nicht unterstützt.

    • spark.kubernetes.authenticate.driver.serviceAccountName

    • spark.kubernetes.authenticate.executor.serviceAccountName

    • spark.kubernetes.namespace

    • spark.kubernetes.driver.pod.name

    • spark.kubernetes.container.image.pullPolicy

    • spark.kubernetes.container.image

      Anmerkung

      Sie können spark.kubernetes.container.image für benutzerdefinierte Docker-Images verwenden. Weitere Informationen finden Sie unter Anpassen von Docker-Images für Amazon EMR in EKS.

Eine Aufgabenausführung für die Verwendung von Amazon-S3-Protokollen konfigurieren

Um den Aufgabenfortschritt überwachen und Fehler beheben zu können, müssen Sie Ihre Aufträge so konfigurieren, dass Protokollinformationen an Amazon S3, Amazon CloudWatch Logs oder beide gesendet werden. Dieses Thema hilft Ihnen bei den ersten Schritten beim Veröffentlichen von Anwendungsprotokollen in Amazon S3 für Ihre Aufträge, die mit Amazon EMR in EKS gestartet wurden.

S3 protokolliert die IAM-Richtlinie

Bevor Ihre Aufträge Protokolldaten an Amazon S3 senden können, müssen die folgenden Berechtigungen in der Berechtigungsrichtlinie für die Auftragausführungsrolle enthalten sein. Ersetzen Sie DOC-EXAMPLE-BUCKET-LOGGING durch den Namen ihres Protokollierungs-Buckets.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*", ] } ] }
Anmerkung

Amazon EMR in EKS kann auch einen Amazon-S3-Bucket erstellen. Wenn ein Amazon-S3-Bucket nicht verfügbar ist, nehmen Sie die “s3:CreateBucket”-Erlaubnis in die IAM-Richtlinie auf.

Nachdem Sie Ihrer Ausführungsrolle die entsprechenden Berechtigungen zum Senden von Protokollen an Amazon S3 erteilt haben, werden Ihre Protokolldaten an die folgenden Amazon-S3-Speicherorte gesendet, wenn s3MonitoringConfiguration im monitoringConfiguration Abschnitt einer start-job-run-Anforderung übergeben werden, wie unter Verwalten von Aufgabenläufen mit dem AWS CLI beschrieben.

  • Controller-Protokolle – /logUri/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr.gz/stdout.gz)

  • Treiberprotokolle – /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderr.gz/stdout.gz)

  • Ausführungsprotokolle – /logUri//virtual-cluster-id/jobs/ job-id/containers/spark-application-id/executor-pod-name/(stderr.gz/stdout.gz)

Einen Aufgabenlauf für die Verwendung von Amazon CloudWatch Logs konfigurieren

Um den Aufgabenfortschritt zu überwachen und Fehler zu beheben, müssen Sie Ihre Aufgaben so konfigurieren, dass Loginformationen an Amazon S3, Amazon CloudWatch Logs oder beide gesendet werden. Dieses Thema hilft Ihnen beim Einstieg in die Verwendung von CloudWatch Logs für Ihre Aufträge, die mit Amazon EMR in EKS gestartet werden. Weitere Informationen zu CloudWatch Logs finden Sie unter Überwachen von Protokolldateien im Amazon-CloudWatch-Benutzerhandbuch.

CloudWatch-Logs-IAM-Richtlinie

Damit Ihre Aufträge Protokolldaten an CloudWatch Logs senden können, müssen die folgenden Berechtigungen in der Berechtigungsrichtlinie für die Aufgabenausführungsrolle enthalten sein. Ersetzen Sie my_log_group_name und my_log_stream_prefix durch die Namen Ihrer CloudWatch-Protokollgruppe bzw. Protokollstream-Namen. Amazon EMR in EKS erstellt die Protokollgruppe und den Protokollstream, falls sie nicht existieren, solange der ARN für die Ausführungsrolle über die entsprechenden Berechtigungen verfügt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
Anmerkung

Amazon EMR in EKS kann auch einen Protokollstream erstellen. Wenn kein Protokollstream vorhanden ist, sollte die IAM-Richtlinie die "logs:CreateLogGroup" Genehmigung enthalten.

Nachdem Sie Ihrer Ausführungsrolle die entsprechenden Berechtigungen erteilt haben, sendet Ihre Anwendung ihre Protokolldaten an CloudWatch Logs, wenn sie cloudWatchMonitoringConfiguration im monitoringConfiguration-Abschnitt einer start-job-run-Anforderung übergeben werden, wie unter Verwalten von Aufgabenläufen mit dem AWS CLI gezeigt.

In der StartJobRun-API ist log_group_name der Protokollgruppenname für CloudWatch und log_stream_prefix ist das Protokollstream-Namenspräfix für CloudWatch. Sie können diese Protokolle in der AWS Management Console anzeigen und durchsuchen.

  • Controller-Protokolle – LogGroup/LogStreamPrefix/virtuelle Cluster-ID/jobs/ job-id/containers/pod-name/(stderr/stdout)

  • Treiberprotokolle – logGroup/logStreamPrefix/virtual-cluster-id/jobs/ job-id/containers/spark-application-id/spark-job-id-driver/ (stderrstdout)

  • Ausführungsprotokolle – logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr/stdout)

Aufgabenausführungen auflisten

Sie können list-job-run ausführen, um den Status der Aufgabenausführungen anzuzeigen, wie das folgende Beispiel zeigt.

aws emr-containers list-job-runs --virtual-cluster-id <cluster-id>

Eine Aufgabenausführung beschreiben

Sie können describe-job-run ausführen, um weitere Informationen über die Aufgabe abzurufen, z. B. den Status, die Statusdetails und den Aufgabennamen, wie das folgende Beispiel zeigt.

aws emr-containers describe-job-run --virtual-cluster-id cluster-id --id job-run-id

Eine Aufgabenausführung abbrechen

Sie können cancel-job-run ausführen, um laufende Aufträge abzubrechen, wie das folgende Beispiel zeigt.

aws emr-containers cancel-job-run --virtual-cluster-id cluster-id --id job-run-id