在 K8S 部署一个 Spark History Server - 篇3

2023-07-04 17:58:24 server history 部署 Spark K8S

History Server -> HS

1 Overview

因为这个系列的主要是想讲怎么在 K8S 上运行 HS,所以篇3讲述的就是这个,假设你已经有一个 K8S 集群,一个 build 好的 image,本文只是将 HS 运行在 K8S 上,关于日志和其他配置的佳实践,本文不提供参考。

2 部署

要将 HS 部署在 K8S 集群里,需要一个 K8S 集群(Mac 用户可以用 Docker for Mac 或者 Minikube 来安装一个 K8S 集群),另外还有一个 build 好的 HS 镜像。

正如篇2说过的,Spark 提供了一个官方的 Dockerfile,安装官网文档直接 build 就可以了。

HS 可以说是一个无状态的应用,用 K8S 来部署再合适不过了。

具体而且合理的部署方案可以是部署一个 Deployment 作为 HS 的后端,再部署一个 Service 来做负载均衡。

需要知道启动 HS,还有一些配置需要调整,比如说如果需要从 HDFS 读取 Application 的作业信息的话,显然还需要配置读取的路径,否则就会从本地的默认 /tmp/spark-events 目录读取,然后还有端口之类的信息。

关于详细的配置方案,建议参考官方文档。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spark-history-server
spec:
  selector:
    matchLabels:
      run: spark-history-server
  replicas: 2
  template:
    metadata:
      labels:
        run: spark-history-server
    spec:
      containers:
        - image: hub.oa.com/runzhliu/spark:spark_2.11-2.4.3
          name: spark-history-server
          args: ["/opt/spark/bin/spark-class", "org.apache.spark.deploy.history.HistoryServer"]
          ports:
            - containerPort: 18080
              name: http
          env:
          - name: SPARK_HISTORY_OPTS
            value: "-Dspark.history.fs.logDirectory=file:///tmp"

相关文章