Apache spark 使用Jupyterhub+;DockerSpawner&x2B;使用现有spark群集的所有spark笔记本电脑

Apache spark 使用Jupyterhub+;DockerSpawner&x2B;使用现有spark群集的所有spark笔记本电脑,apache-spark,jupyter-notebook,jupyterhub,jupyter-scala,Apache Spark,Jupyter Notebook,Jupyterhub,Jupyter Scala,我在一台机器上设置了JupyterHub+DockerSpawner+所有spark笔记本,并且我有一个现有的spark集群 我可以登录并启动服务器,但是如何让笔记本(Toree)访问现有的spark群集 我在谷歌上搜索,发现有人扩展了所有spark笔记本docker的图像并重新安装了Toree https://github.com/jupyter/docker-stacks/wiki/Docker-Recipes#use-使用现有sparkyarn群集的jupyterall spark笔记本电

我在一台机器上设置了JupyterHub+DockerSpawner+所有spark笔记本,并且我有一个现有的spark集群

我可以登录并启动服务器,但是如何让笔记本(Toree)访问现有的spark群集

我在谷歌上搜索,发现有人扩展了所有spark笔记本docker的图像并重新安装了Toree

https://github.com/jupyter/docker-stacks/wiki/Docker-Recipes#use-使用现有sparkyarn群集的jupyterall spark笔记本电脑


有没有更简单的方法来实现这个目标?DockerSpawner能接受任何可以传输到Toree内核的参数吗?

我也面临同样的问题。 已将我的jupyterhub连接到远程spark群集

以下是步骤- 1.通过docker登录我的所有spark笔记本。 2.您会发现spark安装在/usr/local/spark中 3.在那里,您必须更改conf/spark-env.sh和spark-defaults.conf以指向您的集群主机

网络上连接spark的更新

docker容器要连接到spark,必须以主机模式连接到网络-

c.DockerSpawner.extra_host_config = { 'network_mode': 'host' }

c.DockerSpawner.use_internal_ip = True 

c.DockerSpawner.network_name = 'host'
当多个容器尝试启动时,这将导致问题,因为所有容器都无法在主机模式下运行。要克服此问题,请将这些行添加到配置中-

from jupyterhub.utils import random_port
from tornado import gen

class custom_spawner(DockerSpawner):
    @gen.coroutine
    def get_ip_and_port(self):
        return self.container_ip, self.container_port

    @gen.coroutine
    def start(self, *args, **kwargs):
        self.container_port = random_port()
        spawn_cmd = "sh /srv/singleuser/singleuser.sh --port={}".format(self.container_port)
        self.extra_create_kwargs.update({"command": spawn_cmd})

        # start the container
        ret = yield DockerSpawner.start(self, *args, **kwargs)
        return ret

我的spark cluster与jupyterhub主机位于同一网络中,这意味着docker container(在jupyterhub主机上具有内部网络)无法访问网络。您应该确保在
get\u ip\u and\u port
-函数中也会让步,否则在Jupyter Hub的最新版本中,您将得到一个关于未来的错误。