本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EMR 容器預設分類
概觀
emr-containers-defaults 分類下提供下列設定:
-
job-start-timeout -
根據預設,如果任務無法啟動且等待
SUBMITTED狀態為 15 分鐘,則會逾時。此組態會變更任務逾時前要等待的秒數。 -
executor.logging -
啟用或停用執行器 Pod 上的記錄。將此設定為
DISABLED記錄容器時,會從執行器 Pod 中移除,這會停用 中指定的這些 Pod 的任何記錄monitoringConfiguration,例如s3MonitoringConfiguration或cloudWatchMonitoringConfiguration。當此設定未設定或設定為任何其他值時,會啟用執行器 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 不會啟用原生附屬功能,而記錄容器會防止驅動程式啟動,這會導致任務逾時。