gpt4 book ai didi

apache-spark - Kubernetes 上的 Spark UI 历史服务器?

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

使用 spark-submit 我在 Kubernetes 集群上启动应用程序。而且我只有去http://driver-pod:port才能看到Spark-UI .

如何在集群上启动 Spark-UI History Server?
如何使所有正在运行的 Spark 作业都在 Spark-UI 历史服务器上注册。

这可能吗?

最佳答案

对的,这是可能的。简而言之,您需要确保以下几点:

  • 确保所有应用程序都将事件日志存储在特定位置( filesystems3hdfs 等)。
  • 在您的集群中部署历史服务器,可以访问上述事件日志位置。

  • 现在 spark(默认情况下)只读取 filesystem路径,所以我将详细说明这个案例 spark operator :
  • 创建一个 PVC具有支持 ReadWriteMany 的卷类型模式。例如 NFS体积。以下代码段假设您有 NFS 的存储类( nfs-volume ) 已配置:
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: spark-pvc
    namespace: spark-apps
    spec:
    accessModes:
    - ReadWriteMany
    volumeMode: Filesystem
    resources:
    requests:
    storage: 5Gi
    storageClassName: nfs-volume
  • 确保您的所有 Spark 应用程序都启用了事件日志记录并位于正确的路径:
  •   sparkConf:
    "spark.eventLog.enabled": "true"
    "spark.eventLog.dir": "file:/mnt"
  • 将事件日志卷安装到每个应用程序(您也可以使用 operator mutating web hook 来集中它)pod。具有上述配置的示例 list 如下所示:
  • ---
    apiVersion: "sparkoperator.k8s.io/v1beta2"
    kind: SparkApplication
    metadata:
    name: spark-java-pi
    namespace: spark-apps

    spec:
    type: Java
    mode: cluster

    image: gcr.io/spark-operator/spark:v2.4.4
    mainClass: org.apache.spark.examples.SparkPi
    mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.11-2.4.4.jar"

    imagePullPolicy: Always
    sparkVersion: 2.4.4
    sparkConf:
    "spark.eventLog.enabled": "true"
    "spark.eventLog.dir": "file:/mnt"
    restartPolicy:
    type: Never
    volumes:
    - name: spark-data
    persistentVolumeClaim:
    claimName: spark-pvc
    driver:
    cores: 1
    coreLimit: "1200m"
    memory: "512m"
    labels:
    version: 2.4.4
    serviceAccount: spark
    volumeMounts:
    - name: spark-data
    mountPath: /mnt
    executor:
    cores: 1
    instances: 1
    memory: "512m"
    labels:
    version: 2.4.4
    volumeMounts:
    - name: spark-data
    mountPath: /mnt

  • 安装安装共享卷的 spark 历史服务器。然后您将在历史服务器 UI 中获得访问事件:
  • apiVersion: apps/v1beta1
    kind: Deployment

    metadata:
    name: spark-history-server
    namespace: spark-apps

    spec:
    replicas: 1

    template:
    metadata:
    name: spark-history-server
    labels:
    app: spark-history-server

    spec:
    containers:
    - name: spark-history-server
    image: gcr.io/spark-operator/spark:v2.4.0

    resources:
    requests:
    memory: "512Mi"
    cpu: "100m"

    command:
    - /sbin/tini
    - -s
    - --
    - /opt/spark/bin/spark-class
    - -Dspark.history.fs.logDirectory=/data/
    - org.apache.spark.deploy.history.HistoryServer

    ports:
    - name: http
    protocol: TCP
    containerPort: 18080

    readinessProbe:
    timeoutSeconds: 4
    httpGet:
    path: /
    port: http

    livenessProbe:
    timeoutSeconds: 4
    httpGet:
    path: /
    port: http

    volumeMounts:
    - name: data
    mountPath: /data
    volumes:
    - name: data
    persistentVolumeClaim:
    claimName: spark-pvc
    readOnly: true


    随意配置 Ingress , Service用于访问 UI .
    enter image description here

    您也可以使用 Google Cloud Storage、Azrue Blob Storage 或 AWS S3 作为事件日志位置。为此,您需要安装一些额外的 jars所以我建议看看 Lightbend Spark 历史服务器 imagecharts .

    关于apache-spark - Kubernetes 上的 Spark UI 历史服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51798927/

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