我试图让 Spark kubernetes 安装工作,其中 Spark 驱动程序节点驻留在其自己的单独 pod 中(客户端模式),并使用 SparkSession.builder 机制引导集群(不使用 Spark-submit)。
我正在从这个工作:
https://spark.apache.org/docs/latest/running-on-kubernetes.html
以下是驱动程序用于引导集群的代码:
val sparkSession = SparkSession.builder
.master("k8s://https://kubernetes.default.svc:32768")
.appName("test")
.config("spark.driver.host", "sparkrunner-0")
.config("spark.driver.port", "7077")
.config("spark.driver.blockManager.port", "7078")
.config("spark.kubernetes.container.image","spark-alluxio")
.config("fs.alluxio.impl", "alluxio.hadoop.FileSystem")
.config("fs.alluxio-ft.impl", "alluxio.hadoop.FaultTolerantFileSystem")
.getOrCreate
Run Code Online (Sandbox Code Playgroud)
容器镜像 (spark-alluxio) 是通过将 alluxio 客户端库添加到二进制 Spark 发行版 (2.4.2) 来构建的。
这是用于部署驱动程序的 kubernetes yaml,它位于 StatefulSet 中:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sparkrunner
labels:
app: sparkrunner
spec:
selector:
matchLabels:
app: sparkrunner
serviceName: sparkrunner
replicas: 1
template:
metadata:
labels:
app: sparkrunner
spec:
containers:
- name: sparkrunner
image: "rb/sparkrunner:latest"
imagePullPolicy: Never
ports: …Run Code Online (Sandbox Code Playgroud)