Apache spark 如何使用每个命名空间的有限资源在kubernetes上运行spark

Apache spark 如何使用每个命名空间的有限资源在kubernetes上运行spark,apache-spark,kubernetes,pyspark,Apache Spark,Kubernetes,Pyspark,目前,我已经使用helm在k8s中设置了spark独立群集。它有固定数量的工人,5名工人和一名师傅。目前正在进行spark提交,如下所示 spark-submit --class LogParser.LogBundleConfigFetcher --conf spark.submit.deployMode=cluster --conf spark.network.timeout=300 --conf spark.scheduler.mode=FAIR --conf **spark.master=

目前,我已经使用helm在k8s中设置了spark独立群集。它有固定数量的工人,5名工人和一名师傅。目前正在进行spark提交,如下所示

spark-submit --class LogParser.LogBundleConfigFetcher --conf spark.submit.deployMode=cluster --conf spark.network.timeout=300 --conf spark.scheduler.mode=FAIR --conf **spark.master=spark://sm-care-alice-staging:7077** --conf spark.executor.cores=5 --conf spark.executor.memory=20g --conf spark.dynamicAllocation.maxExecutors=3 --conf spark.driver.memory=16g --conf spark.dynamicAllocation.enabled=false --conf spark.cores.max=15 http://minio.platform.svc.cluster.local:9000/alice-care/staging/config/spark/aliceparser.jar
但是它有一些限制,比如我们不能在pyspark中使用集群模式——目前独立集群上的python应用程序不支持集群部署模式

因此,我想使用k8s作为集群管理器。但是我们有一个巨大的k8s集群,有限的资源分配给每个由名称空间分配的项目。使用k8s作为集群管理器将动态生成POD,因此我们无法控制资源,我知道我们可以控制实例,但在多个spark提交的情况下,我们必须将其限制在内核和内存的限制范围内

我想知道我们如何控制k8s群集管理器来限制资源,即无论调用多少spark submit,都将内核限制在100个

或者有没有其他方法可以在同一设置中以群集模式运行pyspark?

您可以使用它来限制命名空间中运行的POD可以消耗多少cpu和内存

limits.cpu:在非终端状态的所有POD中,cpu的总和 限制不能超过此值。 限制。内存:跨一个存储空间中的所有存储舱 非终端状态,内存限制的总和不能超过此值 价值 requests.cpu:在非终端状态的所有POD中,总和 CPU请求的数量不能超过此值。 请求。内存:跨所有 如果POD处于非终端状态,则无法计算内存请求的总和 超过此值。 您可以使用来限制命名空间中运行的POD可以消耗多少cpu和内存

limits.cpu:在非终端状态的所有POD中,cpu的总和 限制不能超过此值。 限制。内存:跨一个存储空间中的所有存储舱 非终端状态,内存限制的总和不能超过此值 价值 requests.cpu:在非终端状态的所有POD中,总和 CPU请求的数量不能超过此值。 请求。内存:跨所有 如果POD处于非终端状态,则无法计算内存请求的总和 超过此值。
spark-submit \
    --master k8s://https://$(k8s_ip):8443 \
    --deploy-mode cluster \
    --name spark-example \
    --conf spark.executor.instances=5 \
    --conf spark.kubernetes.container.image=pyspark-k8s-example:2.4.1 \
    --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
    --conf spark.kubernetes.pyspark.pythonVersion=3 \
    /usr/bin/run.py
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: spark-ns
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi