使用 zeppelin 在 kubernetes 上 Spark

Tal*_*him 3 apache-spark kubernetes apache-zeppelin

我按照本指南在使用 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
Run Code Online (Sandbox Code Playgroud)

Spark 构建完成后,我创建了一个 docker 容器,如文章中所述:

bin/docker-image-tool.sh -m -t 2.4.X build
Run Code Online (Sandbox Code Playgroud)

我将 zeppelin 配置为使用在 kubernetes 支持下构建的 Spark 映像。上面的文章解释了spark解释器将自动配置kubernetes上的spark以客户端模式运行并运行作业。

但是每当我尝试使用 Spark 运行任何段落时,我都会收到以下错误

Exception in thread "main" java.lang.IllegalArgumentException: basedir must be absolute: ?/.ivy2/local
Run Code Online (Sandbox Code Playgroud)

我尝试设置火花配置spark.jars.ivy为指向临时目录,但这也不起作用。

我在这里发现了类似的问题: basedir必须是绝对的:?/.ivy2/local

但我似乎无法配置 Spark 以使用该spark.jars.ivy /tmp/.ivy配置运行。我尝试使用spark-defaults.conf构建spark构建Spark,但这似乎也不起作用。

对这个问题以及如何解决它感到非常困惑,任何指导将不胜感激。

谢谢!

J L*_*son 5

我也遇到了这个问题,但我用于设置的解决方法spark.jars.ivy=/tmp/.ivy是将其设置为环境变量。

在 Spark 解释器设置中,添加以下属性:SPARK_SUBMIT_OPTIONS并将其值设置为--conf spark.jars.ivy=/tmp/.ivy

这应该会传递额外的选项来触发提交,并且您的工作应该继续。