| 1 | == Jupyter |
| 2 | [[PageOutline]] |
| 3 | |
| 4 | [[span(style=color: #FF0000, '''Jupyter for JSC is in alpha phase''')]] |
| 5 | |
| 6 | [[Image(jupyterpreview.png, 400px, align=right, margin=10, link=wiki:vnc3d)]] |
| 7 | |
| 8 | [[Image(jupyter-logo.png,200px, align=left, margin=15, link:vnc3d)]] |
| 9 | \\ |
| 10 | 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. |
| 11 | |
| 12 | \\ |
| 13 | \\ |
| 14 | |
| 15 | [[Image(jupyterhub-logo.png, 200px, align=left, margin=15, link:vnc3d)]] |
| 16 | \\ |
| 17 | Project Jupyter created !JupyterHub to support many users. |
| 18 | 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. |
| 19 | 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. |
| 20 | |
| 21 | \\ |
| 22 | \\ |
| 23 | \\ |
| 24 | \\ |
| 25 | === Where are the sources? |
| 26 | |
| 27 | * Jupyter: [https://github.com/jupyter/jupyter] |
| 28 | * Jupyter Notebook: [https://github.com/jupyter/notebook] |
| 29 | * Jupyter Console: [https://github.com/jupyter/jupyter_console] |
| 30 | * Jupyter NBViewer: [https://github.com/jupyter/nbviewer] |
| 31 | * Jupyter Kernel |
| 32 | * Jupyter IPyKernel: [https://github.com/ipython/ipykernel] |
| 33 | * Jupyter IPyWidgets: [https://github.com/jupyter-widgets/ipywidgets] |
| 34 | * other |
| 35 | * Tornado Web Server: [https://github.com/tornadoweb/tornado] |
| 36 | |
| 37 | * !JupyterLab: [https://github.com/jupyterlab/jupyterlab] |
| 38 | |
| 39 | * !JupyterHub: [https://github.com/jupyterhub/jupyterhub] |
| 40 | * Jupyter Http Proxy: [https://github.com/jupyterhub/configurable-http-proxy] |
| 41 | |
| 42 | |
| 43 | === How does it work? |
| 44 | |
| 45 | ==== !JupyterHub |
| 46 | !JupyterHub is a multi-user server that manages and proxies multiple instances of the single-user Jupyter notebook server. |
| 47 | |
| 48 | There are three basic processes involved: |
| 49 | * multi-user Hub (!Python/Tornado) |
| 50 | * configurable http proxy (node-http-proxy) |
| 51 | * multiple single-user IPython notebook servers (Python/IPython/Tornado) |
| 52 | |
| 53 | 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]. |
| 54 | |
| 55 | more: https://jupyterhub.readthedocs.io/en/0.7.2/howitworks.html |
| 56 | |
| 57 | ===== Callpath |
| 58 | * start the Tornado event loop [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1638 app.py:1638] |
| 59 | * initialize !JupyterHub and all its services [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L365 app.py:365] |
| 60 | * init webserver [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1284 app.py:1284] |
| 61 | * static_path points to HTML/JS files [https://github.com/jupyterhub/jupyterhub/tree/master/share/jupyter/hub/ webfiles] |
| 62 | * start !JupyterHub and all its services [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1517 app.py:1517] |
| 63 | * start webserver [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1532 app.py:1532] |
| 64 | * start http proxy [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1542 app.py:1542] |
| 65 | * start services [https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/app.py#L1551 app.py:1551] |
| 66 | |
| 67 | ---- |
| 68 | any feedback welcomed - [mailto:h.zilken@fz.juelich.de], [mailto:j.goebbert@fz-juelich.de] |