Verwenden der Spark-Container-Protokoll-Rotation - 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.

Verwenden der Spark-Container-Protokoll-Rotation

Mit Amazon EMR 6.11.0 und höher können Sie das Spark-Container-Protokoll-Rotationsfeature unktion für Amazon EMR in EKS aktivieren. Anstatt eine einzelne stdout- oder stderr-Protokolldatei zu generieren, rotiert dieses Feature die Datei auf der Grundlage Ihrer konfigurierten Rotationsgröße und entfernt die ältesten Protokolldateien aus dem Container.

Durch das Rotieren von Spark-Container-Protokolle können Sie potenzielle Probleme mit großen Spark-Protokolldateien vermeiden, die für lang laufende Aufträge oder Streaming-Aufträge generiert wurden. Sie könnten beispielsweise einen Spark-Auftrag mit langer Laufzeit starten und der Spark-Treiber generiert eine Container-Protokolldatei. Wenn der Auftrag stunden- oder tagelang ausgeführt wird und der Speicherplatz auf dem Kubernetes-Knoten begrenzt ist, kann die Container-Protokolldatei den gesamten verfügbaren Festplattenspeicher beanspruchen. Wenn Sie die Spark-Container-Protokollrotation aktivieren, teilen Sie die Protokolldatei in mehrere Dateien auf und entfernen die ältesten Dateien.

Um das Feature zur Rotation von Spark-Container-Protokollen zu aktivieren, konfigurieren Sie die folgenden Spark-Parameter:

containerLogRotationConfiguration

Fügen Sie diesen Parameter monitoringConfiguration hinzu, um die Protokoll-Rotation zu aktivieren. Standardmäßig ist die Rückverfolgung deaktiviert. Sie müssen containerLogRotationConfiguration zusätzlich zu s3MonitoringConfiguration verwenden.

rotationSize

Der rotationSize-Parameter gibt die Dateigröße für die Protokollrotation an. Der Bereich der möglichen Werte ist von 2KB bis 2GB. Die numerische Einheit des rotationSize-Parameters wird als Ganzzahl übergeben. Da Dezimalwerte nicht unterstützt werden, können Sie mit dem Wert 1500MB beispielsweise eine Rotationsgröße von 1,5 GB angeben.

maxFilesToKeep

Der maxFilesToKeep-Parameter gibt die maximale Anzahl von Dateien an, die nach der Rotation im Container aufbewahrt werden sollen. Der kleinste Wert ist 1 und der größte Wert ist 50.

Sie können diese Parameter im monitoringConfiguration-Abschnitt der StartJobRun-API angeben, wie das folgende Beispiel zeigt. In diesem Beispiel rotiert Amazon EMR in EKS Ihre Protokolle mit rotationSize = "10 MB" und maxFilesToKeep = 3 um 10 MB, generiert eine neue Protokolldatei und löscht dann die älteste Protokolldatei, sobald die Anzahl der Protokolldateien 3 erreicht.

{ "name": "my-long-running-job", "virtualClusterId": "123456", "executionRoleArn": "iam_role_name_for_job_execution", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "entryPoint_location", "entryPointArguments": ["argument1", "argument2", ...], "sparkSubmitParameters": "--class main_class --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://my_s3_log_location" }, "containerLogRotationConfiguration": { "rotationSize":"10MB", "maxFilesToKeep":"3" } } } }

Um eine Auftragsausführung mit der Spark-Container-Protokollrotation zu starten, geben Sie im Befehl einen Pfad zu der JSON-Datei an, die Sie mit diesen Parametern in StartJobRun konfiguriert haben.

aws emr-containers start-job-run \ --cli-input-json file://path-to-json-request-file