ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

JupyterHub 机构级部署 FAQ:面向管理层、IT 与技术负责人的关键问题与源码级解答

JupyterHub 机构级部署 FAQ:面向管理层、IT 与技术负责人的关键问题与源码级解答 后端微服务【免费下载链接】jupyterhubMulti-user server for Jupyter notebooks项目地址https://gitcode.com/gh_mirrors/ju/jupyterhub点击查看免费下载在机构引入 JupyterHub 之前决策链条上通常有三类角色各自带着不同维度的疑虑管理层关心它解决什么问题、是否成熟、和托管产品比如何IT 关心怎么部署、是否安全、资源如何管控技术负责人关心扩展性、容错、接口兼容性。本文以仓库中面向机构的 FAQ 文档institutional-faq.md为主体完整覆盖上述三类角色的全部关键问题并结合仓库源码Spawner 资源限制、品牌定制配置、用户管理 API 等对每个论断给出可验证的实现依据帮助读者在评估与落地 JupyterHub 时做出有事实支撑的判断。上图展示了 JupyterHub 的核心组成一个中心 Hub、一个代理proxy以及按用户拉起的单用户服务器。这一架构是后文回答JupyterHub 本身不提供计算资源用户会话如何被管理等问题的基础。概念辨析Jupyter Notebook、JupyterLab 与 JupyterHub 有什么区别Jupyter 家族三个名词经常混用FAQ 给出的界定如下评估项目时建议先统一团队内对此的认知Jupyter Notebook是一种文档规范.ipynb文件将叙述性文本与代码单元及其输出交织在一起同时它也是编辑这类文档的一种图形化界面。除此之外还有多种可编辑.ipynb格式的图形界面nteract、JupyterLab、Google Colab、Kaggle 等。JupyterLab是一个灵活且可扩展的交互计算用户界面带有针对 Jupyter Notebook 的一系列扩展以及面向数据科学栈其他环节的扩展。JupyterHub是一个管理多用户交互计算会话的应用它把用户与其希望访问的基础设施连接起来可以为很多人提供 Jupyter Notebook 和 JupyterLab 的远程访问。从源码结构看JupyterHub 主包jupyterhub/围绕多用户会话管理组织app.py定义 Hub 主体与配置项user.py、orm.py管理用户及其会话状态spawner.py抽象如何为用户拉起计算环境proxy.py负责在单一域名下把请求路由到对应用户的服务器——这正好对应上图的 Hub、Proxy、单用户服务器三件套。JupyterHub 适合在大型机构环境中采用吗适合。JupyterHub 既被用于大用户池场景也被用于复杂的高性能计算场景。FAQ 列举了两个代表性案例UC Berkeley 用 JupyterHub 支撑其数据科学教育项目课程服务超过 3,000 名学生Pangeo 项目用 JupyterHub 提供基于 Dask 的可扩展云计算访问。JupyterHub 稳定且可定制能满足大型组织的用例需求。管理层视角问题、成熟度与竞品对比简言之JupyterHub 为我们解决什么问题JupyterHub 提供了一个用于数据科学和协作的共享平台。它让用户能够在机构基础设施上使用熟悉的数据科学工作流如科学 Python 技术栈、R tidyverse、Jupyter Notebook同时让管理员对资源访问、安全、环境和认证拥有一定的控制力。JupyterHub 成熟吗为什么值得信任成熟——核心 JupyterHub 应用已达到 1.0 状态对大多数机构而言被认为是稳定且高性能的。JupyterHub 也常与其他工具配合部署以支撑可扩展基础设施、大数据集和高性能计算工作负载。还有哪些机构在使用 JupyterHubJupyterHub 被学术界、工业界和政府研究实验室的众多机构使用最常见的用户是两类群体小型团队数据科学团队、研究实验室、协作项目用它提供交互计算、协作与分析的共享资源大型团队院系、大型班级、大规模远程用户组用它按规模提供对组织硬件、数据和分析环境的访问。FAQ 给出的一份使用者样本列表如下大学与学院UC Berkeley、UC San Diego、Cal Poly SLO、Harvard University、University of Chicago、University of Oslo、University of Sheffield、Université Paris Sud、University of Versailles、University of Portland研究实验室NASA、NCAR、NOAA、Large Synoptic Survey Telescope、Brookhaven National Lab、Minnesota Supercomputing Institute、ALCF、CERN、Lawrence Livermore National Laboratory、HUNT在线社区Pangeo、Quantopian、mybinder.org、MathHub、Open Humans计算基础设施提供商NERSC、San Diego Supercomputing Center、Compute Canada公司Capital One、SANDVIK code、Globus更完整的机构部署列表可参考仓库中的部署画廊。与 Google Colaboratory、RStudio.cloud、Anaconda Enterprise 等托管产品相比如何JupyterHub 让你掌控自己的数据、基础设施和编码环境并且厂商中立降低了对特定厂商或服务的锁定。它同样提供云上交互计算环境访问与上述服务类似但相比这些工具更灵活、更可定制、免费并赋予管理员对部署方式和硬件更多的控制权。由于 JupyterHub 是开源、社区驱动的工具它可以按机构需求扩展和修改。它与开源数据科学栈配合良好可服务多种计算环境、用户界面和计算硬件也可部署在任意位置——企业云基础设施、高性能计算机、本地硬件甚至一台笔记本电脑这是大多数其他共享交互计算工具做不到的。IT 运维视角部署、安全与资源管控如何在机构硬件上部署 JupyterHub取决于你拥有什么硬件。JupyterHub 足够灵活可部署在机房硬件、本地集群、云基础设施等多种硬件上。最常用的方式是使用JupyterHub 发行版distribution——这些是针对特定基础设施预先配置、带有既定实践opinionated的部署方式。FAQ 推荐的两个发行版是Zero to JupyterHubZ2JH面向 Kubernetes可规模化、运行在 Kubernetes 上的 JupyterHub 部署方案与指南更适合较大或动态变化的用户群体约 50–10,000 人或更复杂的计算/数据需求The Littlest JupyterHubTLJH轻量级、运行在单机上云端或办公室桌下的 JupyterHub更适合较小的用户群体约 4–80 人或较轻量的计算资源。JupyterHub 在云上表现如何很好——大多数 JupyterHub 部署都运行在云基础设施上覆盖多种云服务商。根据所选发行版还可以把 JupyterHub 与多种云原生服务打通让用户在交互会话中访问其他资源。例如使用面向 Kubernetes 的 Z2JH 发行版时可以借助 dask-kubernetes 这类基于容器的分布式计算技术Z2JH 的 Helm Chart 还内置了按需自动扩缩集群的能力便于充分利用灵活云部署的优势。JupyterHub 安全吗简短回答是。作为独立应用的 JupyterHub 已在机构级别经过多年实战检验并内置了一组对多数用户合理的默认安全决策。基础 JupyterHub 应用的安全考量见仓库中的安全概览在 Kubernetes 上部署时的安全考量则需参考 Z2JH 发行版自身的文档。较长的回答取决于你的部署形态。由于 JupyterHub 非常灵活它可以用于多种部署形态而这通常意味着把它与其他基础设施例如 Dask Gateway 服务对接。这些对接会产生大量安全决策部署的安全性往往取决于这些决策。源码层面可以印证其默认的安全设计取向安全概览明确指出 JupyterHub 的设计定位是服务**半可信semi-trusted**用户的简单多用户服务器Hub 与单用户服务器位于单一域名下、由同一个代理代理访问因此浏览器不把它们视为相互独立的站点。文档同时列出了管理员必须确保的隔离约束用户不能修改自身单用户服务器环境、不能选择任意基础镜像等以及面向不可信用户的缓解手段如启用用户子域名subdomain_hook见 app.py 中对subdomain_hook的配置说明。如果对安全有疑虑FAQ 建议向 JupyterHub 社区Jupyter Community Forum求助那里有丰富安全部署经验。JupyterHub 本身提供计算或数据基础设施吗不提供。JupyterHub 管理用户会话可以控制计算基础设施但自身不提供这些设施。你需要在自己的基础设施本地或云上运行 JupyterHub。JupyterHub 内部没有数据的概念但其设计允许与本地或远程的数据仓库通信供交互计算会话使用。这一边界也与上文架构图一致图中 Hub 负责的是会话与路由真正的算力在单用户服务器及其背后的基础设施。如何管理用户JupyterHub 提供若干用户管理选项。搭建时你可以选择**认证authentication**方式用户可以用机构邮箱注册、首次登录时自选用户名/密码或把认证外包给组织的 OAuth 服务。JupyterHub 的用户存储在本地的用户数据库中管理员可以手动修改。活跃用户可以在**管理员页面admin page**查看该页面可以停止或重启内核、检查用户文件系统、甚至接管takeover用户会话以协助调试。从源码看这些管理能力对应 REST APIusers.py 中的用户 API handler 实现了管理员添加/删除用户、启动/停止指定用户的服务器含命名服务器等操作前端 admin 页面admin.html即基于这些接口提供图形化操作。如何管理软件环境JupyterHub 的一个关键优势是管理员可以定义用户能访问的环境。具体方式取决于底层基础设施The Littlest JupyterHub运行在单台虚拟机上管理员向所有用户路径下的共享目录安装包来定义环境面向 Kubernetes 的 JupyterHub用 Docker 镜像定义环境你可以维护一份供用户选择的镜像列表并控制用户可用 RAM、会话在云上使用的机器类型等。在源码中环境即镜像的能力由 Spawner 抽象承载spawner.py 定义Spawner基类及其配置项容器化 Spawner如 KubeSpawner则在其基础上实现镜像选择逻辑。管理员侧对环境的控制面还体现在cull闲置回收与资源限制等配置项上。JupyterHub 如何管理计算资源交互计算会话的资源由 **Spawner生成器**控制。Spawner 定义如何创建一个新的用户会话并按不同基础设施定制——例如 KubeSpawner 知道如何操作 Kubernetes deployment在用户登录时创建新的 pod。对于更复杂的计算资源如分布式计算JupyterHub 可以与其他基础设施工具如 Dask 或 Spark对接让用户在 JupyterHub 会话内控制可扩展或高性能资源这些资源的控制逻辑由非 JupyterHub 的应用负责。能否与高性能计算HPC资源一起使用可以。JupyterHub 可接入多种计算基础设施尤其与 Dask 等开源调度器结合时可以从 JupyterHub 的交互会话中管理相当复杂的计算基础设施参见 Dask 的 HPC 文档。用户会话占用多少资源这完全由管理员配置。仓库中的 Spawner 基类提供了成对的资源限制配置项可直接在jupyterhub_config.py中设置mem_limitspawner.py#L1111单用户服务器允许使用的最大字节数支持K/M/G/T后缀若用户服务器试图分配超过该值的内存将会失败不保证一定能分配这么多但绝不会超过。cpu_limitspawner.py#L1134单用户服务器允许使用的最大 CPU 核数如0.5表示半个核心2表示最多两个核心。对应的保底项mem_guarantee、cpu_guarantee同理语义是至少保证可用。一个重要的源码级注意点也是上述配置项 help 文本反复强调的这些是配置项必须由 Spawner 实现真正执行——默认 SpawnerLocalProcessSpawner并不实现强制限额自定义/容器化 Spawner 必须支持这些设置才能真正生效。此外spawner.py 在构造用户会话环境时会把MEM_LIMIT、MEM_GUARANTEE、CPU_LIMIT、CPU_GUARANTEE注入为环境变量供用户服务器内的组件如前端扩展读取——注意注释说明这是给人/扩展看的Spawner 应直接使用 traitlet 本身。因此 FAQ 所说的高度可配置在实现上就是这组 limit/guarantee 配置项想让用户只做轻量数据分析就调低上限想让它作为通往 HPC/数据资源的网关就调高上限或对接远端计算设施。能否定制 JupyterHub 的外观可以。最常见的修改是在登录页、加载页以及跨页面持久的元素如页头上加自定义品牌。实现上是 app.py#L949 中的c.JupyterHub.logo_file配置项指定一个 logo 图片路径即可覆盖横幅中的 Jupyter logo默认值为随包分发的jupyterhub-80.png见 share/jupyterhub/static/images登录页样式等还可基于 login.html 等模板扩展相关做法见模板文档。技术负责人视角开箱体验、规模与容错能开箱即用地匹配我们团队的交互计算环境吗取决于环境复杂度。如果所需资源都能放进单台虚拟机TLJH 大约半天就能跑起来对于可扩展 Kubernetes 集群、HPC 与数据接入等更复杂的场景则需要更多时间以及对相关技术如云上的 DevOps 知识的掌握。总体而言基础 JupyterHub 部署本身不是搭建过程的瓶颈瓶颈在于把 JupyterHub 与你希望提供给用户的各项服务与工具对接起来。扩展性如何有什么局限JupyterHub 在小规模单台虚拟机和大规模可扩展 Kubernetes 集群下都工作良好最小可服务 2 人团队最大可服务约 10,000 用户的规模。扩展性很大程度上取决于其部署的基础设施。JupyterHub 的设计目标是轻量且灵活可以按需裁剪部署。容错性如何机器宕机会发生什么在容器化环境如 Kubernetes中部署的 JupyterHub 可以配置得相当抗故障例如 JupyterHub 进程失败时已有用户会话不受影响只是新用户无法登录Hub 进程重启后应与用户数据库无缝重连系统恢复正常。当然部署细节如是否部署在可扩展集群上会直接影响容错能力。这一设计与架构有关会话状态保存在 Hub 的数据库中见 docs/source/explanation/database.md 对数据库层的说明路由规则由代理持久持有因此 Hub 短暂不可用不必然破坏已运行会话。支持哪些用户界面开箱即用地支持多种主流数据科学界面JupyterLab、Jupyter Notebook、RStudio 等。原则上任何能通过 Web 地址提供服务的界面都可以由 JupyterHub 提供服务配合相应配置。实现上单用户服务器由 Spawner 拉起、代理负责 URL 路由JUPYTERHUB_SERVICE_PREFIX/JUPYTERHUB_SERVICE_URL等环境变量见 spawner.py#L1370-L1381因此只要界面能被一个 Web 进程承载就能接入。是否让团队协作更容易JupyterHub 为团队提供标准化环境和共享资源访问大幅降低了分析成果在成员间分发的成本便于协作并在彼此想法上继续构建。配合 HPC 与数据访问它提供了共同资源放大团队原型分析 → 扩展到更大数据 → 互相分享结果的能力。JupyterHub 还提供了一套在组织不同层级间共享计算叙事computational narrative的框架例如数据科学家可以把 Notebook 渲染为 Voilà dashboard 分享给不熟悉编程的同事或创建公开的交互分析供他人使用。能否用于 R/RStudio 或其他语言环境可以。Jupyter 是多语言项目社区提供 40 多种覆盖各语言的 kernel最常见的是 Python、Julia、R。JupyterHub 也可以提供访问 RStudio 这类自带语言 kernel 访问方式的界面。小结FAQ 论断的源码级验证清单FAQ 论断仓库内的实现证据用户会话资源可限制memory/CPUspawner.py 的mem_limit/cpu_limit/mem_guarantee/cpu_guarantee且由 Spawner 实现真正强制执行环境由 Spawner 定义共享目录安装包 / Docker 镜像spawner.py 的Spawner基类抽象管理员可增删用户、启停会话、接管调试apihandlers/users.py 的用户管理 REST API品牌定制logo 等app.py 的logo_file配置项安全默认值针对半可信用户设计不可信用户需额外加固子域名等websecurity.md部署画廊机构使用者列表gallery-jhub-deployments.md对于正在评估 JupyterHub 的机构团队建议按上述三类角色逐条核对自身约束用户规模、基础设施形态、安全策略并优先以 TLJH/Z2JH 两个发行版为落地路径涉及资源限额时务必确认所选 Spawner 真正实现了mem_limit/cpu_limit的强制执行否则配置不会生效。赞分享后端微服务【免费下载链接】jupyterhubMulti-user server for Jupyter notebooks项目地址https://gitcode.com/gh_mirrors/ju/jupyterhub点击查看免费下载相关推荐Dask 机构落地 FAQ 全解面向管理、IT 与数据科学家的部署决策指南Dask 机构落地 FAQ 全解面向管理、IT 与数据科学家的部署决策指南 本文基于 docs/source/faq.rst https://link.git大数据数据分析任务调度JupyterHub 技术架构与部署入门从三组件模型到源码级初始化流程JupyterHub 技术架构与部署入门从三组件模型到源码级初始化流程 JupyterHub 是一个多用户 Jupyter notebook 服务器它通过一后端微服务GitHub_Trending二级管理中层技术领导者的角色与职责GitHub_Trending二级管理中层技术领导者的角色与职责 引言中层管理的独特挑战 在技术组织的层级结构中中层技术领导者Second Level文档知识库研发协作上一篇深度解构Mistral Transformer分布式智能协同架构演进下一篇Apache Lucene-Solr终极指南为什么它是企业级搜索的首选解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表