【发布时间】:2020-10-11 23:36:25
【问题描述】:
我目前使用 helm 在 k8s 中设置了 spark 独立集群。它有固定数量的工人(5 个工人)和一个主人。目前正在进行 spark-submit 如下
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-submit 的情况下,我们必须将其限制为内核和内存的限制)。
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,而不管调用了多少次 spark-submit。
或者有没有其他方法可以在同一设置中以集群模式运行 pyspark?
【问题讨论】:
标签: apache-spark kubernetes pyspark