Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行
Posted
技术标签:
【中文标题】Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行【英文标题】:Zeppelin+Spark+Kubernetes: Let Zeppelin Job run on existing Spark Cluster 【发布时间】:2020-11-29 19:13:37 【问题描述】:在 k8s 集群中。如何配置 zeppelin 以在现有 spark 集群中运行 spark 作业,而不是启动新的 pod?
我已经启动并运行了一个 k8s 集群,我想在其中运行带有 Zeppelin 的 Spark。
使用官方的 bitnami/spark helm chart (v 3.0.0) 部署 Spark。我有一个 Master 和两个 Worker pod 运行良好,一切都很好。
Zeppelin 使用来自官方 apache-zeppelin github 的 zeppelin-server.yaml
进行部署。
我已经构建了自己的 zeppelin 容器,没有对 apache/zeppelin:0.9.0 进行太多修改..
短伪 Dockerfile:
FROM bitnami/spark:3.0.0 AS spark
FROM apache/zeppelin:0.9-0 AS Zeppelin
COPY --from spark /opt/btinami/spark/ /opt/bitnami/spark
RUN Install kubectl
END
我稍微修改了zeppelin-server.yaml
。 (图片,imagePullSecret,设置spark master为spark master的headless Service DNS)
现在我希望我的 zeppelin 作业在我现有的 spark 集群上运行 --- 没有成功。
当我提交 zeppelin 作业(用于 spark 解释器)时,zeppelin 会启动一个新的 spark pod,并且只与这个一起工作。 Spark 解释器设置应该是这样的。 spark master url 已设置 (spark://\<master-url\>:\<master-port\>
),spark home 也已设置。
虽然这是一种甜蜜的行为,但这不是我想要的。
我想要(以及我的问题是)是:我希望我的 zeppelin pod 将 spark 作业提交到现有集群 - 而不是启动新的 pod。我很确定必须设置一些config/env/whatever
,但我根本找不到。
所以,我想问一下:有没有人知道如何在现有的 spark 集群上运行 zeppelin spark 作业?我认为设置火花大师应该可以完成这项工作......
亲切的问候 鲍勃
【问题讨论】:
zeppelin-server.yaml 使用 zeppelin-server 和 zeppelin-interpreter 镜像,这些镜像在 dockerhub 中不可用。为了构建这些镜像,我们需要构建 zeppelin-distribution 镜像,但在我的例子中它失败了。你能指导我在 K8s 中停止 zeppelin。我会完全陷入困境。 【参考方案1】:隔了一段时间再回答自己……
对于遇到相同问题的任何人:
进入火花解释器设置
(可选,如果您还没有该属性)按“编辑”,向下滚动并添加属性 SPARK_SUBMIT_OPTIONS
编辑 SPARK_SUBMIT_OPTIONS 值并添加“--master spark://
保存设置并完成...
这让我大吃一惊,因为已经有一个设置 spark master 本身的选项。
什么解决了两次进入spark master的问题。
-
在“master”键下
上述对 SPARK_SUBMIT_OPTIONS 的编辑。
【讨论】:
以上是关于Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行的主要内容,如果未能解决你的问题,请参考以下文章
使用 zeppelin 在 kubernetes 上运行 Spark
在 kubernetes 上使用 zeppelin 公开 spark-ui
为啥 Zeppelin-Spark 解释器没有挂载 Kubernetes 服务帐户
Kubernetes 上的 Zeppelin Spark Master 设置