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

Apache spark Kubernetes上的Spark UI历史服务器?,apache-spark,kubernetes,Apache Spark,Kubernetes,使用spark submit,我在Kubernetes集群上启动应用程序。只有当我去的时候,我才能看到Spark UI 如何在群集上启动Spark UI History Server? 如何使所有正在运行的spark作业都在spark UI历史记录服务器上注册 这可能吗?是的,这是可能的。简而言之,您需要确保以下几点: 确保所有应用程序将事件日志存储在特定位置(filesystem、s3、hdfs等) 在集群中部署历史记录服务器,并访问上述事件日志位置 现在spark(默认情况下)只从文件系

使用spark submit,我在Kubernetes集群上启动应用程序。只有当我去的时候,我才能看到Spark UI

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


这可能吗?

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

  • 确保所有应用程序将事件日志存储在特定位置(
    filesystem
    s3
    hdfs
    等)
  • 在集群中部署历史记录服务器,并访问上述事件日志位置
现在spark(默认情况下)只从
文件系统
路径读取,因此我将详细阐述此案例:

  • 创建具有支持模式的卷类型的
    PVC
    。例如
    NFS
    volume。下面的代码段假定您已经配置了
    NFS
    NFS卷
    )的存储类:
  • 确保所有spark应用程序都已启用事件日志记录,且路径正确:
  • 通过将事件日志卷装载到每个应用程序(您还可以使用操作员变异web钩子来集中它)pod。具有上述配置的清单示例如下所示:
  • 安装spark history server以装载共享卷。然后,您将在历史服务器UI中访问事件:
您可以自由配置
入口
服务
以访问
用户界面


您还可以使用Google云存储、Azrue Blob存储或AWS S3作为事件日志位置。为此,您需要安装一些额外的
jar
,因此我建议您查看一下lightbend spark history server和。

@Qasim感谢您的知识。是否可以连接到kerberized hdfs?
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: spark-pvc
  namespace: spark-apps
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 5Gi
  storageClassName: nfs-volume
  sparkConf:
    "spark.eventLog.enabled": "true"
    "spark.eventLog.dir": "file:/mnt"
---
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

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