【问题标题】:How many Spark Executor Pods you run per Kubernetes Node每个 Kubernetes 节点运行多少个 Spark Executor Pod
【发布时间】:2019-06-25 21:37:51
【问题描述】:

Spark 需要大量资源才能完成工作。 Kubernetes 是资源管理的绝佳环境。每个节点运行多少个 Spark POD 才能获得最佳资源利用率?

尝试在 Kubernetes 集群上运行 Spark 集群。

【问题讨论】:

    标签: apache-spark kubernetes


    【解决方案1】:

    这取决于许多因素。我们需要知道您拥有多少资源以及 Pod 消耗了多少资源。为此,您需要setup a Metrics-server

    Metrics Server 是集群范围内的资源使用数据聚合器。

    下一步是设置 HPA。

    Horizo​​ntal Pod Autoscaler 根据观察到的 CPU 利用率或其他自定义指标自动扩展复制控制器、部署或副本集中的 pod 数量。 HPA 通常从一系列聚合 API 中获取指标:

    • metrics.k8s.io
    • custom.metrics.k8s.io
    • external.metrics.k8s.io

    如何让它发挥作用?

    kubectl 默认支持 HPA:

    • kubectl create - 创建一个新的自动缩放器
    • kubectl get hpa - 列出您的自动扩缩器
    • kubectl describe hpa - 获取自动缩放器的详细描述
    • kubectl delete - 删除自动缩放器

    示例: kubectl autoscale rs foo --min=2 --max=5 --cpu-percent=80 为复制集 foo 创建一个自动缩放器,目标 CPU 利用率设置为 80%,副本数在 2 到 5 之间。您可以并且应该根据需要调整所有值。

    Here 是关于如何使用 kubectl autoscale 命令的详细文档。

    如果你觉得有用,请告诉我。

    【讨论】:

    • 谢谢马克。我的背景都是 k8s(没有 Spark),所以我很熟悉你在这里提到的内容。挑战在于:如果您的节点和执行程序大小相同(每个节点一个 pod),您将在自动扩展集群时出现延迟(在 AWS 上创建和设置新节点需要 10-15 分钟)。如果您使 pod 小于节点并使用 HPA,那么您会遇到在同一节点上运行多个执行器实例并影响彼此性能的问题(在我们的案例中是不同的客户)
    • 您可以在每个节点上使用多个 pod,并同时使用 CA 和 HPA/VPA,直到您对自己的配置感到满意为止。不要将您的选择范围缩小到上面提到的两个。集群缩放是一个非常可调的话题,可以而且应该从不同的角度来看待。考虑您的资源并考虑扩大或缩小规模所需的时间。了解不同的自动扩缩器如何协同工作将有助于您配置集群。我知道这不是您需要的确切直接答案,但也许它会向您展示更大的图景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2019-09-09
    • 2016-11-14
    • 2019-08-02
    • 2016-06-04
    相关资源
    最近更新 更多