与Prometheus运算符进行火花提交

时间:2020-01-22 00:05:50

标签: apache-spark kubernetes

我正在尝试在spark上使用Kubernetes。想法是使用spark-submit到运行k8s的{​​{1}}集群。现在我知道prometheus operator可以响应prometheus operator yaml,但是我很困惑如何使用ServiceMonitor

提供YAML中所需的某些内容

这里是spark-submit

YAML

1 个答案:

答案 0 :(得分:2)

您尚不能向SparkSubmit创建的服务提供其他端口及其名称(Spark v2.4.4)。在更高版本中,情况可能会发生变化。

您可以做的是在使用Service提交作业后,例如运行SparkSubmit,为每个Spark作业创建附加的Kubernetes spark-submit ... && kubectl apply ...(Spark监视服务,例如,群集IP类型)。 。或使用您选择的语言使用任何可用的Kubernetes客户端。

请注意,您可以使用Kubernetes OwnerReference来配置自动Service删除/在Spark Driver Pod删除时进行GC。

然后,您可以通过Prometheus Operator Helm值提供ServiceMonitor

prometheus:
  additionalServiceMonitors:
     - name: spark-metrics           # <- Spark Monitoring Service name
      selector:
        matchLabels:
          k8s-app: spark-metrics     # <- Spark Monitoring Service label
      namespaceSelector:
        any: true
      endpoints:
      - interval: 10s
        port: metrics                # <- Spark Monitoring Service port name

请注意,Spark还没有提供自定义Spark Pod的方法,因此应公开指标的Pod端口未在Pod级别公开,并且无法通过{{ 1}}。为了解决这个问题,您可以在Service中添加其他EXPOSE ... 8088语句并重建Spark映像。

本指南应帮助您使用例如Jmx Exporter的PULL策略设置Spark监视。

还有另一种选择(尽管仅建议将其用于短期运行的Spark作业,但是如果您不运行大量工作负载,则可以在您的环境中尝试使用它)

这样做,您的Spark Pod会将指标推向网关,而Prometheus将按顺序从网关中拉出它们。

您可以结合Prometheus运算符和Prometheus Pushgateway来参考Spark Monitoring Helm chart示例。

希望有帮助。