EMR Serverless 的預設應用程式組態 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

EMR Serverless 的預設應用程式組態

您可以在應用程式層級為您在相同應用程式下提交的所有任務指定一組通用的執行時間和監控組態。這可降低與需要為每個任務提交相同組態相關聯的額外額外額外負荷。

您可以在下列時間點修改組態:

下列各節提供更多詳細資訊和範例,以供進一步參考。

在應用程式層級宣告組態

您可以為您在應用程式下提交的任務指定應用程式層級記錄和執行期組態屬性。

monitoringConfiguration

若要指定您隨應用程式提交之任務的日誌組態,請使用 monitoringConfiguration 欄位。如需記錄無EMR伺服器的詳細資訊,請參閱 儲存日誌

runtimeConfiguration

若要指定執行時間組態屬性,例如 spark-defaults,請在 欄位中提供組態物件runtimeConfiguration。這會影響您使用應用程式提交之所有任務的預設組態。如需詳細資訊,請參閱 Hive 組態覆寫參數Spark 組態覆寫參數

可用的組態分類會因特定無EMR伺服器版本而有所不同。例如,自訂 Log4j spark-driver-log4j2和 的分類spark-executor-log4j2僅適用於 6.8.0 版和更新版本。如需應用程式特定屬性的清單,請參閱 Spark 任務屬性Hive 任務屬性

您也可以設定 Apache Log4j2 屬性AWS Secrets Manager 以保護資料,並在應用程式層級設定 Java 17 執行時間

若要在應用程式層級傳遞 Secrets Manager 秘密,請將下列政策連接至需要建立或更新具有秘密之無EMR伺服器應用程式的使用者和角色。

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

如需為秘密建立自訂政策的詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的 的 許可政策範例 AWS Secrets Manager

注意

您在應用程式層級指定的 runtimeConfiguration會映射到 applicationConfiguration中的 StartJobRun API。

範例宣告

下列範例示範如何使用 宣告預設組態create-application

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 } }'

在任務執行期間覆寫組態

您可以使用 StartJobRun 指定應用程式組態和監控組態的組態覆寫API。 EMR然後,無伺服器會合併您在應用程式層級和任務層級指定的組態,以判斷任務執行的組態。

合併發生的精細程度層級如下:

注意

您在 提供的組態優先順序會StartJobRun取代您在應用程式層級提供的組態。

如需優先順序排名的詳細資訊,請參閱 Hive 組態覆寫參數Spark 組態覆寫參數

當您啟動任務時,如果您未指定特定組態,則會從應用程式繼承。如果您在任務層級宣告組態,您可以執行下列操作:

  • 覆寫現有的組態 - 在StartJobRun請求中提供相同的組態參數,並包含您的覆寫值。

  • 新增其他組態 - 在StartJobRun請求中新增具有您要指定值的新組態參數。

  • 移除現有組態 - 若要移除應用程式執行期組態,請提供您要移除之組態的金鑰,並傳遞組態{}的空白宣告。我們不建議移除包含任務執行所需參數的任何分類。例如,如果您嘗試移除 Hive 任務所需的屬性,任務將會失敗。

    若要移除應用程式監控組態,請使用相關組態類型的適當方法:

    • cloudWatchLoggingConfiguration - 若要移除 cloudWatchLogging,請將啟用的旗標傳遞為 false

    • managedPersistenceMonitoringConfiguration - 若要移除受管持久性設定並回到預設啟用狀態,請傳遞組態{}的空白宣告。

    • s3MonitoringConfiguration - 若要移除 s3MonitoringConfiguration,請傳遞組態{}的空白宣告。

覆寫範例

下列範例顯示您可以在 提交任務期間執行的不同操作start-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 } } }'

執行任務時,會根據 和 中所述的優先順序覆寫排名,套用下列分類Hive 組態覆寫參數和組態Spark 組態覆寫參數

  • 分類spark-defaults將使用任務層級指定的屬性進行更新。此分類StartJobRun只會考慮 中包含的屬性。

  • 分類spark-executor-log4j2會新增至現有的分類清單中。

  • spark-driver-log4j2 將會移除分類。

  • 的組態managedPersistenceMonitoringConfiguration會以任務層級的組態更新。

  • 的組態s3MonitoringConfiguration將被移除。

  • 的組態cloudWatchLoggingConfiguration會新增至現有的監控組態。