使用 zeppelin 在 kubernetes 上运行 Spark
Posted
技术标签:
【中文标题】使用 zeppelin 在 kubernetes 上运行 Spark【英文标题】:Spark on kubernetes with zeppelin 【发布时间】:2020-07-27 10:21:01 【问题描述】:我正在按照本指南在使用 minikube 设置的本地 kubernetes 集群中运行 zeppelin 容器。
https://zeppelin.apache.org/docs/0.9.0-SNAPSHOT/quickstart/kubernetes.html
我能够设置 zeppelin 并在那里运行一些示例代码。我已经下载了 spark 2.4.5 和 2.4.0 源代码,并使用以下命令构建了它以支持 kubernetes:
./build/mvn -Pkubernetes -DskipTests clean package
一旦构建了 spark,我就按照文章中的说明创建了一个 docker 容器:
bin/docker-image-tool.sh -m -t 2.4.X build
我将 zeppelin 配置为使用基于 kubernetes 支持构建的 spark 映像。上面的文章解释了 spark 解释器会在 Kubernetes 上自动配置 spark 以在客户端模式下运行并运行作业。
但每当我尝试使用 spark 运行任何段落时,我都会收到以下错误
Exception in thread "main" java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local
我尝试在 zeppelin 中将 spark 配置 spark.jars.ivy
设置为指向临时目录,但这也不起作用。
我在这里发现了一个类似的问题: basedir must be absolute: ?/.ivy2/local
但我似乎无法将 spark 配置为使用 spark.jars.ivy /tmp/.ivy
配置运行。在构建 spark 时,我尝试使用 spark-defaults.conf 构建 spark,但这似乎也不起作用。
对这个问题以及如何解决它感到非常困惑,任何指导将不胜感激。
谢谢!
【问题讨论】:
【参考方案1】:我也遇到过这个问题,但我用于设置spark.jars.ivy=/tmp/.ivy
的解决方法是将其设置为环境变量。
在您的 spark 解释器设置中,添加以下属性:SPARK_SUBMIT_OPTIONS
并将其值设置为 --conf spark.jars.ivy=/tmp/.ivy
。
这应该会传递额外的选项来触发提交,您的工作应该会继续。
【讨论】:
以上是关于使用 zeppelin 在 kubernetes 上运行 Spark的主要内容,如果未能解决你的问题,请参考以下文章
Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行
Kubernetes Ingress 背后缺少 Zeppelin 笔记本和解释器
为啥 Zeppelin-Spark 解释器没有挂载 Kubernetes 服务帐户
Kubernetes 上的 Spark + Zeppelin