我目前已经使用helm在k8s中建立了spark独立集群。它有固定数量的工人(5名工人)和一名硕士。目前正在做火花-提交如下
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作为集群管理器会动态地生成豆荚,因此我们无法控制资源(我知道我们可以控制实例,但如果出现多个火花提交,则必须将其限制在内核和内存的范围内)。
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我想知道如何控制k8s集群管理器来限制资源,也就是说,不管调用多少个火花提交,内核都限制在100个。
或者是否有其他方法可以在相同的设置下以集群模式运行pyspark?
发布于 2020-06-22 07:05:36
您可以使用计算资源定额来限制运行在命名空间中的荚可以占用多少cpu和内存。
limits.cpu:对于处于非终端状态的所有吊舱,CPU限制之和不能超过此值。limits.memory:在所有处于非终端状态的豆荚中,内存限制之和不能超过此值。requests.cpu:在所有处于非终端状态的豆荚中,CPU请求的总和不能超过此值。requests.memory:在所有处于非终端状态的豆荚中,内存请求的总和不能超过此值。apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
namespace: spark-ns
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gihttps://stackoverflow.com/questions/62508819
复制相似问题