如何在 EKS 上的 EMR 中設定資源限制?我的驅動程式 Pod 無法啟動,因為它請求的 CPU 超出了允許范圍。這對我來說沒有意義。我正在運行下面檔案中的入門代碼。
我添加--conf spark.driver.limit.cores=2是為了嘗試使限制高于下面錯誤訊息中列出的限制。我從這里得到了這個想法https://spark.apache.org/docs/latest/running-on-kubernetes.html#spark-properties
該集群中確實運行了 istio。我不確定這是否會導致問題。
這是我正在運行以觸發作業的代碼
aws emr-containers start-job-run \
--virtual-cluster-id blahblah \
--name pi-4 \
--execution-role-arn arn:aws:iam::0000000000:role/blahblah_emr_eks_executor_role \
--release-label emr-6.4.0-latest \
--job-driver '{
"sparkSubmitJobDriver": {
"entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py",
"entryPointArguments": ["s3://blahblah/wordcount_output"],
"sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1 --conf spark.driver.limit.cores=2"
}
}'
這會導致job-runner容器失敗并出現以下情況:
狀態:終止原因:錯誤訊息:執行緒“main”io.fabric8.kubernetes.client.KubernetesClientException中的例外:執行失敗:POST在:https://kubernetes.default.svc/api/v1/namespaces/spark/pods. 訊息:Pod“spark-00000002vepbpmi2hkv-driver”無效:spec.containers[2].resources.requests:無效值:“1”:必須小于或等于 cpu 限制。接收狀態:Status(apiVersion=v1, code=422, details=StatusDetails(causes=[StatusCause(field=spec.containers[2].resources.requests, message=Invalid value: "1": 必須小于等于到cpu限制,reason=FieldValueInvalid, additionalProperties={})], group=null, kind=Pod, name=spark-00000002vepbpmi2hkv-driver, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message =Pod“spark-00000002vepbpmi2hkv-driver”無效:spec.containers[2].resources.requests:無效值:“1”:必須小于或等于cpu限制,metadata=ListMeta(_continue=null,remainingItemCount= null,resourceVersion=null,selfLink=null,additionalProperties={}),原因=無效,狀態=失敗,附加屬性={})。在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:589)
關于如何進行的任何想法?
uj5u.com熱心網友回復:
我能夠弄清楚。
aws emr-containers start-job-run \
--virtual-cluster-id=blahblah \
--name=pi-4 \
--execution-role-arn=arn:aws:iam::blahblahaccount:role/balblah_role_name \
--release-label=emr-6.4.0-latest \
--job-driver='{
"sparkSubmitJobDriver": {
"entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
"sparkSubmitParameters": "--conf spark.executor.instances=1 --conf spark.executor.memory=2G --conf spark.executor.request.cores=1 --conf spark.kubernetes.executor.limit.cores=2 --conf spark.driver.request.cores=1 --conf spark.kubernetes.driver.limit.cores=2
}
}'
好像是aws docs錯了,實際配置值如下。
--conf spark.{driver|executor}.request.cores--conf spark.{driver|executor}.limit.cores
但是,AWS 檔案讓您傳入--conf spark.driver.cores=1. 這個值似乎沒有被承認,我認為這導致了我的錯誤。下面提到的 spark 配置檔案spark.driver.request.cores優先于spark.driver.cores,我認為這是有道理的,因為當我通過它時會識別出該值。
https://spark.apache.org/docs/latest/running-on-kubernetes.html#configuration
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394038.html
