gpt4 book ai didi

apache-spark - 使用动态分配在 Kubernetes 上运行 Spark

转载 作者:行者123 更新时间:2023-12-04 17:21:57 25 4
gpt4 key购买 nike

我正在尝试在 Kubernetes 集群上使用 spark(现有设置:emr + yarn)。我们的用例是处理过多的工作,包括短期工作(几秒到 15 分钟)。此外,我们有许多工作人员需要运行以处理并发运行的 100 多个作业的高峰时间。
所以我想要实现的是,一直运行 master 并固定少数 worker (比如 5),并在高峰时间将 worker 增加到 40-50。另外,我更喜欢使用动态分配。
我将其设置如下
主图像 (spark-master:X)

    FROM <BASE spark 3.1 Image build using dev/make-distribution.sh -Pkubernetes in spark>
ENTRYPOINT ["/opt/spark/sbin/start-master.sh", "-p", "8081", "<A long running server command that can accept get traffic on 8080 to submit jobs>"]
worker worker 形象( Spark worker :X)
    FROM <BASE spark 3.1 Image build using dev/make-distribution.sh -Pkubernetes in spark>
ENTRYPOINT ["/opt/spark/sbin/start-worker.sh", "spark//spark-master:8081" ,"-p", "8081", "<A long running server command to keep up the worker>"]
部门
apiVersion: apps/v1
kind: Deployment
metadata:
name: spark-master-server
spec:
replicas: 1
selector:
matchLabels:
component: spark-master-server
template:
metadata:
labels:
component: spark-master-server
spec:
containers:
- name: spark-master-server
image: spark-master:X
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8081
---
apiVersion: v1
kind: Service
metadata:
name: spark-master

spec:
type: ClusterIP
ports:
- port: 8081
targetPort: 8081
selector:
component: spark-master-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: spark-worker-instance
spec:
replicas: 3
selector:
matchLabels:
component: spark-worker-instance
template:
metadata:
labels:
component: spark-worker-instance
spec:
containers:
- name: spark-worker-server
image: spark-worker:X
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8081
问题
  • 是否推荐此设置?
  • 在没有 yarn (k8s) 的情况下,我们如何从 Kubernetes 集群中提交新作业?

  • 我们尝试不为每个作业动态创建主节点和驱动程序的原因(如示例 - http://spark.apache.org/docs/latest/running-on-kubernetes.html 中所示)是因为它可能是一个很大的开销。的小工作。

    最佳答案

    Is this setup recommended ?


    不要这么认为。

    Dynamic Resource Allocation是单个 Spark 应用程序的属性,“根据工作负载动态调整应用程序占用的资源”。
    动态资源分配跨越其资源需求,而不管集群中的可用节点如何。只要有可用资源并且集群管理器可以将它们分配给 Spark 应用程序,这些资源就可以自由使用。
    您似乎试图设置的是如何向上和向下扩展集群本身。在您的情况下,它是 Spark Standalone,尽管从技术上讲可以使用 ReplicaSets(只是猜测),但我从未听说过任何早期的尝试。由于 Spark Standalone 不支持开箱即用,因此您只能靠自己。

    我认为这是一种矫枉过正,因为您正在构建一个多层集群环境:使用集群管理器 (Kubernetes) 为 Spark 应用程序托管另一个集群管理器 (Spark Standalone)。鉴于 Spark on Kubernetes 支持开箱即用的动态分配,您唯一需要担心的应该是如何在调整 Kubernetes 集群大小的同时按需“投入”更多 CPU 和内存。您应该依靠 Kubernetes 的功能来调整自己的大小,而不是在 Kubernetes 上使用 Spark Standalone。

    关于apache-spark - 使用动态分配在 Kubernetes 上运行 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65624400/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com