Spark Standalone + Zeppelin + Docker:如何设置SPARK_HOME

时间:2019-08-21 21:57:39

标签: docker apache-spark apache-zeppelin

我使用this脚本构建了Spark独立集群。

然后我想使用另一个容器中的Zeppelin将作业提交到该集群。

问题是,当我尝试从齐柏林飞艇上运行任何东西时,我得到一个例外:

java.lang.RuntimeException: SPARK_HOME is not specified in interpreter-setting for non-local mode, if you specify it in zeppelin-env.sh, please move that into interpreter setting

如何在Zeppelin容器中设置SPARK_HOME变量?

问题是Spark在另一个容器中,我想知道我是否在做正确的事情?

1 个答案:

答案 0 :(得分:0)

构建映像或使用官方齐柏林飞艇是相同的,因此我仅使用官方dockerhub映像来解释示例:

$ docker run --rm  apache/zeppelin:0.8.1 cat /zeppelin/conf/zeppelin-env.sh.template | grep SPARK_HOME
## defining SPARK_HOME makes Zeppelin run spark interpreter process using spark-submit
# export SPARK_HOME                             # (required) When it is defined, load it instead of Zeppelin embedded Spark libraries
## without SPARK_HOME defined, Zeppelin still able to run spark interpreter process using embedded spark binaries.
## however, it is not encouraged when you can define SPARK_HOME

从上面可以看到,在此配置文件中,可以设置SPARK_HOME,现在唯一需要做的就是编写自己的配置文件,如下所示:

zeppelin-env.sh:

#!/bin/bash
export SPARK_HOME=xxxxxx

然后,像下一个启动容器那样运行时将其安装到容器上,您可以根据所引用的文档添加其他参数:

docker run -idt -v $(pwd)/zeppelin-env.sh:/zeppelin/conf/zeppelin-env.sh apache/zeppelin:0.8.1

此外,我注意到您所引用的文档中也告诉您执行此操作,请参见here