wiki:Software/Jupyter

Version 22 (modified by Jens Henrik Goebbert, 7 years ago) ( diff )

--

Jupyter

Jupyter for JSC is in alpha phase


The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and explanatory text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, machine learning and much more.




Project Jupyter created JupyterHub to support many users. The Hub can offer notebook servers to a class of students, a corporate data science workgroup, a scientific research project, or a high performance computing group. With JupyterHub a multi-user Hub which spawns, manages, and proxies multiple instances of the single-user Jupyter notebook (IPython notebook) server can be created.





Where are the sources?

How does it work?

JupyterHub

JupyterHub is a multi-user server that manages and proxies multiple instances of the single-user Jupyter notebook server.

There are three basic processes involved:

  • multi-user Hub (Python/Tornado)
  • configurable http proxy (node-http-proxy)
  • multiple single-user IPython notebook servers (Python/IPython/Tornado)

The proxy is the only process that listens on a public interface. The Hub sits behind the proxy at /hub. Single-user servers sit behind the proxy at /user/[username].

more: https://jupyterhub.readthedocs.io/en/0.7.2/howitworks.html

Callpath
Websites

The websites of JupyterHub are stored in share/jupyter/hub

  • They are build with the template engine Jinja2 for Python for a dynamic generation of the html pages (a detailed description of the API can be found here).
  • Components like buttons are used from bootstrap. It gets included via stylesheets here.
  • home.html
    • provides "block main" and "block script" required by page.html
    • distinguages between "user.running" and "not user.running"
    • uses button class btn-danger and btn-success from bootstrap buttons
    • "block script" includes JavaScript file home.js
      • implements function if stop-button is clicked
        • for communication back to the server functions from the JupyterHubAPI in jhapi.js are called
          • jhapi.js uses jquery.js for ajax-functionality (send/recive commands between client/server)
            • values are send back to client with an an asynchronous HTTP (Ajax) request using jquery.ajax() here
              => this triggers a handler of the tornado web server (eg. start_server sends command "POST" to url users/<username>/server, which triggers function UserServerAPIHandler::post)
Modifications

JupyterHub supports userdefined notebook spawners. At JSC our spawners for each partition of the supercomputer adds the functionality to start a jupyter notebook by submitting a SLURM job on the system.

These additional parameters must be set by the user before he/she starts the server, which are

  • number of nodes
  • run time

This is the minimum number of parameters, but more might be required in future. In the following the bits and pieces are shown that result in the modification, which adds this possibility to JupyterHub:

HTML design

JupyterHub´s design is based on bootstrap. On the right you see a possible implementation of an interface for additional parameter of our custom spawner.



















any feedback welcomed - h.zilken@…, j.goebbert@…

Attachments (6)

Note: See TracWiki for help on using the wiki.