View a markdown version of this page

Speichern von Protokollen - 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.

Speichern von Protokollen

Um Ihren Auftragsfortschritt auf EMR Serverless zu überwachen und Auftragsfehler zu beheben, wählen Sie, wie EMR Serverless Anwendungsprotokolle speichert und bereitstellt. Wenn Sie eine Auftragsausführung einreichen, geben Sie Managed Storage, Amazon S3 und Amazon CloudWatch als Protokollierungsoptionen an.

Geben Sie mit CloudWatch die Protokolltypen und Protokollspeicherorte an, die Sie verwenden möchten, oder akzeptieren Sie die Standardtypen und Speicherorte. Weitere Informationen zu CloudWatch Protokollen finden Sie unterProtokollierung für EMR Serverless mit Amazon CloudWatch. Bei verwaltetem Speicher und S3-Protokollierung sind in der folgenden Tabelle die Protokollspeicherorte und die Verfügbarkeit der Benutzeroberfläche aufgeführt, die Sie erwarten können, wenn Sie verwalteten Speicher, Amazon S3-Buckets oder beides wählen.

Option Ereignisprotokolle Containerprotokolle Benutzeroberfläche der Anwendung

Verwalteter Speicher

Im verwalteten Speicher gespeichert

Im verwalteten Speicher gespeichert

Unterstützt

Sowohl verwalteter Speicher als auch S3-Bucket

An beiden Orten gespeichert

Im S3-Bucket gespeichert

Unterstützt

Amazon-S3-Bucket

Im S3-Bucket gespeichert

Im S3-Bucket gespeichert

Nicht unterstützt 1

1 Wir empfehlen, dass Sie die Option Verwalteter Speicher ausgewählt lassen. Andernfalls können Sie die integrierten Benutzeroberflächen der Anwendung nicht verwenden.

Protokollierung für EMR Serverless mit verwaltetem Speicher

Standardmäßig speichert EMR Serverless Anwendungsprotokolle sicher im von Amazon EMR verwalteten Speicher für maximal 30 Tage.

Anmerkung

Wenn Sie die Standardoption deaktivieren, kann Amazon EMR Ihre Jobs nicht in Ihrem Namen beheben. Beispiel: Sie können nicht Spark-UI von der EMR Serverless Console aus darauf zugreifen.

Um diese Option von EMR Studio aus zu deaktivieren, deaktivieren Sie auf der Seite „Job AWS senden“ im Abschnitt „Zusätzliche Einstellungen“ das Kontrollkästchen „Protokolle 30 Tage lang aufbewahren“.

Um diese Option von zu deaktivieren AWS CLI, verwenden Sie die managedPersistenceMonitoringConfiguration Konfiguration, wenn Sie eine Auftragsausführung einreichen.

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

Wenn sich Ihre EMR Serverless-Anwendung in einem privaten Subnetz mit VPC-Endpunkten für Amazon S3 befindet und Sie eine Endpunktrichtlinie zur Zugriffskontrolle anhängen, fügen Sie die folgenden Berechtigungen hinzu, damit EMR Serverless Anwendungsprotokolle speichern und bereitstellen kann. Ersetzen Sie diese durch die AppInfo Buckets aus der Tabelle Resource mit den verfügbaren Regionen unter Beispielrichtlinien für private Subnetze, die auf Amazon S3 zugreifen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EMRServerlessManagedLogging", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::prod.us-east-1.appinfo.src", "arn:aws:s3:::prod.us-east-1.appinfo.src/*" ], "Condition": { "StringEquals": { "aws:PrincipalServiceName": "emr-serverless.amazonaws.com", "aws:SourceVpc": "vpc-12345678" } } } ] }

Verwenden Sie außerdem den aws:SourceVpc Bedingungsschlüssel, um sicherzustellen, dass die Anforderung die VPC durchläuft, an die der VPC-Endpunkt angehängt ist.

Protokollierung für EMR Serverless mit Amazon S3-Buckets

Bevor Ihre Jobs Protokolldaten an Amazon S3 senden können, müssen Sie die folgenden Berechtigungen in die Berechtigungsrichtlinie für die Job-Laufzeitrolle aufnehmen. amzn-s3-demo-logging-bucketErsetzen Sie es durch den Namen Ihres Logging-Buckets.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Sid": "AllowS3Putobject" } ] }

Um einen Amazon S3-Bucket zum Speichern von Protokollen von einzurichten AWS CLI, verwenden Sie die s3MonitoringConfiguration Konfiguration, wenn Sie eine Auftragsausführung starten. Geben Sie dazu --configuration-overrides in der Konfiguration Folgendes an.

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }

Für Batch-Jobs, für die keine Wiederholungsversuche aktiviert sind, sendet EMR Serverless die Protokolle an den folgenden Pfad:

'/applications/<applicationId>/jobs/<jobId>'

Spark-Treiberprotokolle werden von EMR Serverless im folgenden Pfad gespeichert

'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'

Spark-Executor-Protokolle werden von EMR Serverless im folgenden Pfad gespeichert

'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'

< EXECUTOR-ID > ist eine Ganzzahl.

Die Versionen 7.1.0 und höher von EMR Serverless unterstützen Wiederholungsversuche für Streaming-Jobs und Batch-Jobs. Wenn Sie einen Job mit aktivierten Wiederholungsversuchen ausführen, fügt EMR Serverless dem Protokollpfadpräfix automatisch eine Versuchsnummer hinzu, sodass Sie Protokolle besser unterscheiden und verfolgen können.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

Protokollierung für EMR Serverless mit Amazon CloudWatch

Wenn Sie einen Job an eine EMR-Serverless-Anwendung senden, wählen Sie Amazon CloudWatch als Option zum Speichern Ihrer Anwendungsprotokolle. Auf diese Weise können Sie Protokollanalysefunktionen wie CloudWatch CloudWatch Logs Insights und Live Tail verwenden. Sie können Protokolle auch von CloudWatch anderen Systemen streamen, z. B. OpenSearch zur weiteren Analyse.

EMR Serverless bietet Echtzeitprotokollierung für Treiberprotokolle. Sie können mit der CloudWatch Live-Tail-Funktion oder über CloudWatch CLI-Tail-Befehle in Echtzeit auf die Protokolle zugreifen.

Standardmäßig ist die CloudWatch Protokollierung für EMR Serverless deaktiviert. Verwenden Sie die Konfiguration unter, um sie zu aktivieren. AWS CLI

Anmerkung

Amazon CloudWatch veröffentlicht Protokolle in Echtzeit, sodass mehr Ressourcen von Mitarbeitern beansprucht werden. Wenn Sie sich für eine niedrige Arbeitskapazität entscheiden, kann sich die Auswirkung auf die Laufzeit Ihres Jobs erhöhen. Wenn Sie die CloudWatch Protokollierung aktivieren, empfehlen wir Ihnen, eine höhere Arbeitskapazität zu wählen. Es ist auch möglich, dass sich die Protokollveröffentlichung drosselt, wenn die Rate der Transaktionen pro Sekunde (TPS) für zu niedrig ist. PutLogEvents Die CloudWatch Drosselungskonfiguration gilt global für alle Dienste, einschließlich EMR Serverless. Weitere Informationen finden Sie unter Wie stelle ich die Drosselung in meinen Protokollen fest? CloudWatch auf AWS re:post.

Erforderliche Berechtigungen für die Anmeldung mit CloudWatch

Bevor Ihre Jobs Protokolldaten an Amazon senden können CloudWatch, müssen Sie die folgenden Berechtigungen in die Berechtigungsrichtlinie für die Job-Laufzeitrolle aufnehmen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:*:123456789012:*" ], "Sid": "AllowLOGSDescribeloggroups" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*" ], "Sid": "AllowLOGSPutlogevents" } ] }

AWS CLI

CloudWatch Um Amazon so einzurichten, dass Protokolle für EMR Serverless von der gespeichert werden AWS CLI, verwenden Sie die cloudWatchLoggingConfiguration Konfiguration, wenn Sie eine Jobausführung starten. Stellen Sie dazu die folgenden Konfigurationsüberschreibungen bereit. Geben Sie optional auch einen Protokollgruppennamen, einen Protokollstream-Präfixnamen, Protokolltypen und einen Verschlüsselungsschlüssel-ARN an.

Wenn Sie die optionalen Werte nicht angeben, werden die Protokolle in einer Standardprotokollgruppe /aws/emr-serverless mit dem Standardprotokollstream CloudWatch veröffentlicht/applications/applicationId/jobs/jobId/worker-type.

EMR Serverless Versionen 7.1.0 und höher unterstützen Wiederholungsversuche für Streaming-Jobs und Batch-Jobs. Wenn Sie Wiederholungen für einen Job aktiviert haben, fügt EMR Serverless dem Protokollpfadpräfix automatisch eine Versuchsnummer hinzu, sodass Sie Protokolle besser unterscheiden und verfolgen können.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

Im Folgenden wird die Mindestkonfiguration veranschaulicht, die erforderlich ist, um Amazon CloudWatch Logging mit den Standardeinstellungen für EMR Serverless zu aktivieren:

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

Das folgende Beispiel zeigt alle erforderlichen und optionalen Konfigurationen, die angeben, wann Sie Amazon CloudWatch Logging für EMR Serverless aktivieren. Die unterstützten logTypes Werte sind auch im folgenden Beispiel aufgeführt.

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

Standardmäßig veröffentlicht EMR Serverless nur die Treiber stdout und stderr, für die sich die Protokolle stdout und stderr anmelden. CloudWatch Wenn Sie andere Protokolle wünschen, geben Sie eine Container-Rolle und die entsprechenden Protokolltypen mit dem Feld an. logTypes

Die folgende Liste zeigt die unterstützten Worker-Typen, die für die logTypes Konfiguration angegeben sind:

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

Hive
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]