• JupyterHub


    一、什么是JupyerHub

            JupyerHub是一个多用户的JupyerNotebook管理器。默认情况下,JupyerNotebook是不支持多用户使用的。而JupyterHub刚好弥补了这一缺点。

            在Docker中,JupyterHub通过身份验证,然后,通过一个叫Spawn的机制为每一个通过验证的用户生成一个新的Docker容器,这样就可以多用户使用JupyterNotebook了。

            JupyerHub还支持文件夹共享,这个对于多用户协作来说是刚需,而这是普JupyerNotebook做不到的。

            综上所述支持多用户的 Jupyter Notebook 服务器,用于创建、管理、代理多个 Jupyter Notebook 实例。具有扩展性和可定制性。

    二、JupyterHub 三组件 

    1. 一个多用户的 Hub
    2. 一个可配置的 http代理

    3. 多个单用户JupyterNotebook服务器

    JupyterNotebook and JupyterLab
           JupyterHub是管理Notebook / JupyterLab的工具,在了解JupyterHub之前,我们有必要去了解一下Notebook 和 JupyterLab的功能。

    Jupyter Notebook 简介
            Jupyter Notebook是一个开源Web应用程序,允许您创建和共享包含实时代码,方程式,可视化效果和叙述文本的文档。

            用途包括:数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等。

    JupyterLab 简介
            JupyterLab是用于Jupyter notebooks,代码和数据的基于Web的交互式开发环境JupyterLab非常灵活,配置和安排用户界面以支持数据科学,科学计算和机器学习中的各种工作流程。

           JupyterLab是可扩展且模块化的:编写可添加新组件并与现有组件集成的插件。
     

    三、搭建JupyerHub 

    安装

    1. python3 -m pip install jupyterhub
    2. npm install -g configurable-http-proxy
    3. # needed if running the notebook servers in the same environment
    4. python3 -m pip install jupyterlab notebook  
    5. # conda(一个命令安装 jupyterhub 和代理):
    6. conda install -c conda-forge jupyterhub  # installs jupyterhub and proxy
    7. conda install jupyterlab notebook

    更新 pip 版本

    python3 -m pip install --upgrade pip
    安装 npm 和 nodejs

    apt-get update
    sudo apt-get install npm
    sudo npm install n -g
    sudo n lts
    # 安装最新长期支持版 node

    安装 Jupyter Notebook

    pip install notebook
    安装 JupyterLab

    pip install jupyterlab
     

    安装 JupyterHub

    sudo npm install -g configurable-http-proxy

    sudo python3 -m pip install jupyterhub

    测试安装 

    1. jupyterhub -h
    2. configurable-http-proxy -h

    启动 Hub 服务器

    jupyterhub

    浏览器中访问http://localhost:8000,并使用您的 Unix 凭据登录。

    要允许多个用户登录Hub 服务器,您必须 jupyterhub以特权用户身份启动,

    例如 root:

    sudo jupyterhub

    环境配置JupyterHub 官方环境配置

    1. # 设置3-2
    2. # ------------------------------------------------------------------------------
    3. # configurable_http_proxy 代理设置
    4. #允许hub启动代理 可以不写,默认为False 启动configurable-http-proxy
    5. c.ConfigurableHTTPProxy.should_start = True
    6. # proxy与hub与代理通讯
    7. c.ConfigurableHTTPProxy.api_url = 'http://localhost:8001'
    8. # 对外登录设置的ip
    9. c.JupyterHub.ip = '192.168.99.2'
    10. c.JupyterHub.port = 8001
    11. c.PAMAuthenticator.encoding = 'utf8'
    12. # 用户名单设置,默认身份验证方式PAM与NUIX系统用户管理层一致,root用户可以添加用户等,
    13. # c.Authenticator.allowed_users = {'test1', 'test2'}
    14. c.Authenticator.admin_users = {'root'} # 管理员用户
    15. c.DummyAuthenticator.password = "xs301302" # 初始密码设置
    16. # 管理员有权在各自计算机上以其他用户身份登录,以进行调试
    17. c.JupyterHub.admin_access = True
    18. # 此选项通常用于 JupyterHub 的托管部署,以避免在启动服务之前手动创建所有用户
    19. c.LocalAuthenticator.create_system_users=True
    20. # 设置每个用户的 book类型和工作目录(创建.ipynb文件自动保存的地方)
    21. c.Spawner.notebook_dir = '~'
    22. c.Spawner.default_url = '/lab'
    23. c.Spawner.args = ['--allow-root']
    24. # 为jupyterhub 添加额外服务,用于处理闲置用户进程。
    25. # 使用时不好使安装一下:pip install jupyterhub-ilde-culler
    26. c.JupyterHub.services = [
    27. {
    28. 'name': 'idle-culler',
    29. 'command': ['python3', '-m', 'jupyterhub_idle_culler', '--timeout=3600'],
    30. 'admin':True
    31. # 1.5.0 需要服务管理员权限,去kill 部分闲置的进程notebook, 2.0版本已经改了,
    32. # 可以只赋给 idel-culler 部分特定权限,roles
    33. }
    34. ]

    进入管理员用户和创建新用户

     jupyterhub -f jupyterhub_config.py 启动。

    启动有问题,读官方安装和配置文档重新配置或安装。

     四、参考

    1. Docker中部署JupyterNotebook/JupyterHub
    2. Jupyter Notebook介绍、安装及使用教程
  • 相关阅读:
    产品经理常用软件汇总
    无代码和低代码平台:程序员的竞争优势
    <MySQL> 查询数据进阶操作 -- 联合查询
    跳表的实现
    js中的new方法
    element-ui中el-table数据合并行和列,应该怎么解决
    深度学习九 —— 手撕 一维离散序列 的线性卷积 和 互相关
    selenium环境+元素定位大法
    Linux安装GCC(最新版)
    24、四大函数式接口(有函数型接口和断定型接口(都是函数式接口))
  • 原文地址:https://blog.csdn.net/weixin_42322206/article/details/126530665