我面临着同样的问题。已将我的 jupyterhub 连接到远程火花集群。
以下是步骤 - 1. 在我的案例中,通过 docker 登录到 all-spark-notebook。2. 你会发现 spark 安装在 /usr/local/spark 3. 你必须改变 conf/spark-env.sh 和 spark-defaults.conf 指向你的集群主控
更新连接到网络上的火花
要使 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