Standardanwendungskonfiguration für EMR Serverless - 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.

Standardanwendungskonfiguration für EMR Serverless

Sie können auf Anwendungsebene gemeinsame Laufzeit- und Überwachungskonfigurationen für alle Jobs angeben, die Sie im Rahmen derselben Anwendung einreichen. Dadurch wird der zusätzliche Aufwand reduziert, der mit der Notwendigkeit verbunden ist, für jeden Job dieselben Konfigurationen einzureichen.

Sie können die Konfigurationen zu den folgenden Zeitpunkten ändern:

Die folgenden Abschnitte enthalten weitere Informationen und ein Beispiel für weiteren Kontext.

Deklarieren von Konfigurationen auf Anwendungsebene

Sie können Protokollierungs- und Laufzeitkonfigurationseigenschaften auf Anwendungsebene für die Jobs angeben, die Sie im Rahmen der Anwendung einreichen.

monitoringConfiguration

Verwenden Sie das Feld, um die Protokollkonfigurationen für Jobs anzugeben, die Sie mit der Anwendung einreichen. monitoringConfiguration Weitere Informationen zur Protokollierung für EMR Serverless finden Sie unter. Speichern von Protokollen

runtimeConfiguration

Um Eigenschaften der Laufzeitkonfiguration anzugeben, geben Sie z. spark-defaults B. ein Konfigurationsobjekt in das runtimeConfiguration Feld ein. Dies wirkt sich auf die Standardkonfigurationen für alle Jobs aus, die Sie mit der Anwendung einreichen. Weitere Informationen erhalten Sie unter Parameter zum Überschreiben der Hive-Konfiguration und Parameter zur Überschreibung der Spark-Konfiguration.

Die verfügbaren Konfigurationsklassifizierungen variieren je nach EMR Serverless-Version. Zum Beispiel Klassifizierungen für benutzerdefiniertes Log4j spark-driver-log4j2 und spark-executor-log4j2 sind nur mit Versionen 6.8.0 und höher verfügbar. Eine Liste der anwendungsspezifischen Eigenschaften finden Sie unter und. Eigenschaften von Spark-Jobs Eigenschaften von Hive-Jobs

Sie können Apache Log4j2-Eigenschaften AWS Secrets Manager für den Datenschutz und die Java 17-Laufzeit auch auf Anwendungsebene konfigurieren.

Um Secrets Manager Manager-Geheimnisse auf Anwendungsebene weiterzugeben, fügen Sie Benutzern und Rollen, die EMR Serverless-Anwendungen mit Geheimnissen erstellen oder aktualisieren müssen, die folgende Richtlinie hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerPolicy", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "kms:Decrypt" ], "Resource": "arn:aws:secretsmanager:your-secret-arn" } ] }

Weitere Informationen zum Erstellen benutzerdefinierter Richtlinien für geheime Daten finden Sie AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch unter Beispiele für Berechtigungsrichtlinien.

Anmerkung

DieruntimeConfiguration, die Sie auf Anwendungsebene angeben, applicationConfiguration entspricht der StartJobRunAPI.

Beispiel einer Deklaration

Das folgende Beispiel zeigt, wie Standardkonfigurationen mit deklariert create-application werden.

aws emr-serverless create-application \ --release-label release-version \ --type SPARK \ --name my-application-name \ --runtime-configuration '[ { "classification": "spark-defaults", "properties": { "spark.driver.cores": "4", "spark.executor.cores": "2", "spark.driver.memory": "8G", "spark.executor.memory": "8G", "spark.executor.instances": "2", "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver", "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name", "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name", "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretID" } }, { "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", "logger.IdentifierForClass.name": "classpathForSettingLogger", "logger.IdentifierForClass.level": "info" } } ]' \ --monitoring-configuration '{ "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/app-level" }, "managedPersistenceMonitoringConfiguration": { "enabled": false } }'

Überschreiben von Konfigurationen während eines Joblaufs

Mit der StartJobRunAPI können Sie Konfigurationsüberschreibungen für die Anwendungskonfiguration und die Überwachungskonfiguration angeben. EMR Serverless führt dann die Konfigurationen zusammen, die Sie auf Anwendungs- und Jobebene angeben, um die Konfigurationen für die Jobausführung zu bestimmen.

Die Granularitätsstufe bei der Zusammenführung ist wie folgt:

Anmerkung

Die Priorität der Konfigurationen, die Sie auf Anwendungsebene bereitstellen, StartJobRunhat Vorrang vor den Konfigurationen, die Sie auf Anwendungsebene bereitstellen.

Weitere Informationen zur Rangfolge der Prioritäten finden Sie unter Parameter zum Überschreiben der Hive-Konfiguration und. Parameter zur Überschreibung der Spark-Konfiguration

Wenn Sie einen Job starten und keine bestimmte Konfiguration angeben, wird diese von der Anwendung übernommen. Wenn Sie die Konfigurationen auf Jobebene deklarieren, können Sie die folgenden Operationen ausführen:

  • Eine bestehende Konfiguration überschreiben — Geben Sie denselben Konfigurationsparameter in der StartJobRun Anfrage mit Ihren Override-Werten an.

  • Zusätzliche Konfiguration hinzufügen — Fügen Sie der StartJobRun Anfrage den neuen Konfigurationsparameter mit den Werten hinzu, die Sie angeben möchten.

  • Eine bestehende Konfiguration entfernen — Um eine Laufzeitkonfiguration einer Anwendung zu entfernen, geben Sie den Schlüssel für die Konfiguration an, die Sie entfernen möchten, und übergeben Sie eine leere Deklaration {} für die Konfiguration. Es wird nicht empfohlen, Klassifizierungen zu entfernen, die Parameter enthalten, die für die Ausführung eines Jobs erforderlich sind. Wenn Sie beispielsweise versuchen, die erforderlichen Eigenschaften für einen Hive-Job zu entfernen, schlägt der Job fehl.

    Um eine Konfiguration zur Anwendungsüberwachung zu entfernen, verwenden Sie die entsprechende Methode für den entsprechenden Konfigurationstyp:

    • cloudWatchLoggingConfiguration— Um zu entfernencloudWatchLogging, übergeben Sie das Kennzeichen enabled alsfalse.

    • managedPersistenceMonitoringConfiguration— Um die verwalteten Persistenzeinstellungen zu entfernen und zum Standardstatus aktiviert zurückzukehren, übergeben Sie eine leere Deklaration {} für die Konfiguration.

    • s3MonitoringConfiguration— Um zu entfernens3MonitoringConfiguration, übergeben Sie eine leere Deklaration {} für die Konfiguration.

Beispiel für Override

Das folgende Beispiel zeigt verschiedene Operationen, die Sie bei der Einreichung eines Jobs unter ausführen könnenstart-job-run.

aws emr-serverless start-job-run \ --application-id your-application-id \ --execution-role-arn your-job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1/wordcount_output"] } }' \ --configuration-overrides '{ "applicationConfiguration": [ { // Override existing configuration for spark-defaults in the application "classification": "spark-defaults", "properties": { "spark.driver.cores": "2", "spark.executor.cores": "1", "spark.driver.memory": "4G", "spark.executor.memory": "4G" } }, { // Add configuration for spark-executor-log4j2 "classification": "spark-executor-log4j2", "properties": { "rootLogger.level": "error", "logger.IdentifierForClass.name": "classpathForSettingLogger", "logger.IdentifierForClass.level": "info" } }, { // Remove existing configuration for spark-driver-log4j2 from the application "classification": "spark-driver-log4j2", "properties": {} } ], "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { // Override existing configuration for managed persistence "enabled": true }, "s3MonitoringConfiguration": { // Remove configuration of S3 monitoring }, "cloudWatchLoggingConfiguration": { // Add configuration for CloudWatch logging "enabled": true } } }'

Zum Zeitpunkt der Auftragsausführung gelten die folgenden Klassifizierungen und Konfigurationen auf der Grundlage der unter Parameter zum Überschreiben der Hive-Konfiguration und Parameter zur Überschreibung der Spark-Konfiguration beschriebenen Rangfolge zur Prioritätsüberschreibung.

  • Die Klassifizierung spark-defaults wird mit den auf Auftragsebene angegebenen Eigenschaften aktualisiert. Nur die in enthaltenen Eigenschaften StartJobRun würden für diese Klassifizierung berücksichtigt.

  • Die Klassifizierung spark-executor-log4j2 wird in die bestehende Liste der Klassifizierungen aufgenommen.

  • Die Klassifizierung spark-driver-log4j2 wird entfernt.

  • Die Konfigurationen für managedPersistenceMonitoringConfiguration werden mit Konfigurationen auf Auftragsebene aktualisiert.

  • Die Konfigurationen für s3MonitoringConfiguration werden entfernt.

  • Die Konfigurationen für cloudWatchLoggingConfiguration werden zu bestehenden Überwachungskonfigurationen hinzugefügt.