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

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 unterSpeichern 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 auch Apache Log4j2-Eigenschaften AWS Secrets Manager für den Datenschutz und die Java 17-Laufzeit auf Anwendungsebene konfigurieren.

Um Secrets Manager Manager-Geheimnisse auf Anwendungsebene weiterzugeben, fügen Sie Benutzern und Rollen, die EMR serverlose 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, entspricht applicationConfiguration in 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 einer Jobausführung

Sie können Konfigurationsüberschreibungen für die Anwendungskonfiguration und die Überwachungskonfiguration mit dem StartJobRunAPIangeben. EMR Serverless führt dann die Konfigurationen zusammen, die Sie auf Anwendungs- und Auftragsebene 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 ein, 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, die auf der unter Parameter zum Überschreiben der Hive-Konfiguration und Parameter zur Überschreibung der Spark-Konfiguration beschriebenen Rangfolge der Prioritätsüberschreibung basieren.

  • 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.