View a markdown version of this page

使用 Amazon EMR 容器預設分類 - Amazon EMR

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

使用 Amazon EMR 容器預設分類

概觀

emr-containers-defaults 分類下提供下列設定:

job-start-timeout

根據預設,如果任務無法啟動且等待 SUBMITTED狀態為 15 分鐘,則會逾時。此組態會變更任務逾時前要等待的秒數。

executor.logging

啟用或停用執行器 Pod 上的記錄。將此設定為 DISABLED記錄容器時,會從執行器 Pod 中移除,這會停用 中指定的這些 Pod 的任何記錄monitoringConfiguration,例如 s3MonitoringConfigurationcloudWatchMonitoringConfiguration。當此設定未設定或設定為任何其他值時,會啟用執行器 Pod 上的記錄。

logging.image

設定要用於驅動程式和執行器 Pod 上記錄容器的自訂映像。

logging.request.cores

為驅動程式和執行器 Pod 上的記錄容器設定 CPUs 數量的自訂值,以 CPU 單位為單位。根據預設,不會設定此選項。

logging.request.memory

設定驅動程式和執行器 Pod 上記錄容器的記憶體量自訂值,以位元組為單位。根據預設,這會設定為 512Mi。MB 是類似於 MB 的度量單位。

logging.eventLog.dir

使用此組態來啟用持久性應用程式 UI,並將 Spark 事件日誌儲存到您自己的 S3 位置。將 logging.eventLog.dir設定為事件日誌的 S3 路徑。在 中monitoringConfiguration,將 persistentAppUI 設定為 ENABLED。使用 spark.eventLog.dir時請勿設定 logging.eventLog.dir;這兩個組態不相容。如果spark.eventLog.dir已設定 ,則該組態會優先,而記錄容器無法複寫 Spark 事件日誌。這表示 指定的 S3 位置logging.eventLog.dir不會接收事件日誌,持久性應用程式 UI 也無法運作。

logging.nativeSidecar

當您將此屬性設定為ENABLED適用於 Amazon EMR 6.8.0 版或更新版本的 時,Amazon EMR 會將 Spark 驅動程式和執行器 Pod 上的記錄容器設定為Kubernetes原生附屬容器 (請參閱Kubernetes網站的詳細資訊),而非一般容器。這表示記錄容器會在失敗時自動重新啟動,且記錄容器失敗不會導致 Pod 失敗。

節點版本需求

您的 Amazon EKS 節點必須執行 1.29 Kubernetes版或更新版本。EKS 叢集版本可能與您的節點版本不同。如果您的節點執行的版本低於 1.29, Kubernetes 不會啟用原生附屬功能,而記錄容器會防止驅動程式啟動,這會導致任務逾時。

作業提交器分類範例

StartJobRun 具有自訂任務逾時的 請求

{ "name": "spark-python", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "job-start-timeout": "1800" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } }

StartJobRun 針對執行器 Pod 停用記錄的 請求

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "executor.logging": "DISABLED" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }

StartJobRun 具有驅動程式和執行器 Pod 的自訂記錄容器映像、CPU 和記憶體的請求

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "logging.image": "YOUR_ECR_IMAGE_URL", "logging.request.memory": "200Mi", "logging.request.cores": "0.5" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }
注意

如果 Fluentd 記錄容器遇到out-of-memory(OOM) 錯誤,請增加 logging.request.memory值。例如,將其設定為 1Gi,將更多記憶體配置到記錄容器,並防止 OOM 問題。

StartJobRun 使用 Spark 事件日誌 Amazon S3 目的地的 請求

下列範例會將 Spark 事件日誌儲存至您自己的 Amazon S3 儲存貯體,同時啟用持久性應用程式 UI。ENABLED 預設為 persistentAppUI設定。

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "logging.eventLog.dir": "s3://my-bucket/event-logs/" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED" } }
注意

使用 時,請勿在spark-defaults分類spark.eventLog.dir中設定 logging.eventLog.dir。這兩個組態不相容。如果spark.eventLog.dir已設定 ,則該組態會優先,且記錄容器無法複寫 Spark 事件日誌。這表示 指定的 S3 位置logging.eventLog.dir不會收到事件日誌,持久性應用程式 UI 也無法運作。

StartJobRun 使用原生附屬記錄的 請求

下列範例會啟用 Spark 驅動程式和執行器 Pod 上記錄容器的原生附屬模式。啟用時,記錄容器會以Kubernetes原生附屬執行,在故障時自動重新啟動,且不會影響 Spark Pod 的狀態。

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "logging.nativeSidecar": "ENABLED" } } ], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://my-bucket/logs/" } } }
節點版本需求

您的 Amazon EKS 節點必須執行 1.29 Kubernetes版或更新版本。EKS 叢集版本可能與您的節點版本不同。如果您的節點執行的版本低於 1.29, Kubernetes 不會啟用原生附屬功能,而記錄容器會防止驅動程式啟動,這會導致任務逾時。