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

Posted

技术标签:

【中文标题】Spark Standalone + Zeppelin + Docker:如何设置 SPARK_HOME【英文标题】:Spark Standalone + Zeppelin + Docker: how to set SPARK_HOME 【发布时间】:2019-12-27 04:54:15 【问题描述】:

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

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

问题是当我尝试从 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】:

构建镜像或者使用官方的zeppelin都是一样的,所以我只是使用官方的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

然后,在运行时像next一样挂载到容器中启动容器,你可以根据你引用的文档添加其他参数:

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

另外,我注意到你提到的文件中也告诉你这样做,见here

【讨论】:

我不太清楚 spark_home 工件在 zeppelin 容器上的安装位置... 其实我从来没用过zeppelin,但是我觉得zeppelin只是用spark-client和spark cluster通信,所以在host上安装spark,自己挂载到zeppelin容器就是这样。【参考方案2】:

在您的 docker-compose.yaml 文件中,挂载您本地下载的 spark 卷。 即

zeppelin-notebook:
    image: apache/zeppelin:0.10.0
    ports:
      - "3000:8080"
    environment:
      - LOCAL_IP=zeppelin-notebook
      - SPARK_HOME=/opt/spark
    volumes:
      - ./zeppelin/notebooks:/zeppelin/notebook
      - <path to your local spark folder>/spark-3.0.2-bin-hadoop3.2/:/opt/spark
执行docker-compose up

【讨论】:

以上是关于Spark Standalone + Zeppelin + Docker:如何设置 SPARK_HOME的主要内容,如果未能解决你的问题,请参考以下文章

:Spark环境搭建-StandAlone

Spark新手入门——3.Spark集群(standalone模式)安装

关于Spark下的standalone模式的搭建

Spark-Standalone模式

安装standalone模式的spark

Spark 2.4 standalone 部署