JupyterHub搭建
Jupyter是什么
Jupyter是一款基于python的web notebook服务,目前有大多python数据挖掘与机器学习爱好者使用这款服务,其特性其实与Ipytohn Notebook差不多,准确说Ipython Notebook是一款提供增强型交互的功能的shell,而Jupyter除了Ipython的功能,还加入了普通编辑器的通用功能,是一款带代码交互的动态文档web编辑器。
Jupyterhub
由于Jupyter只支持单用户的使用场景,作为一个可交互的web服务,只支持单用户模式实在让人难以理解。估计开发者也觉得这个问题太过鸡肋,于是Jupyterhub因有而生。
安装
安装依赖包:
1
2$ yum install sqlite-devel npm nodejs-legacy zlib-devel openssl-devel
$ npm install -g configurable-http-proxy安装py3:
1
2
3
4$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
$ tar zxvf Python-3.6.1.tgz
$ ./configure --prefix=/usr/local/python36 --enable-loadable-sqlite-extensions
$ make -j 20 && make altinstallReset环境变量(可选,如果有py2环境需要操作):
1
$ export PYTHONPATH=''
pip安装Jupyterhub:
1
$ pip3.6 install jupyterhub notebook -i https://pypi.douban.com/simple/
启动Jupyterhub
1 | $ export PYTHONPATH='' && ./jupyterhub --ip 0.0.0.0 --port 8888 |
生成config文件
1 | $ ./jupyterhub --generate-config |
理论上到这步为止,jupyterhub安装完毕,可以顺利启动。
Kernel
Kernel可以理解为每个notebook运行的后台环境,Jupyterhub以及Jupyter虽然是基于python的application,但这并不意味着其notebook的功能只能为python环境使用,事实上Jupyter的强大就体现在此处,其可以支持任意环境的notebook,目前主流的数据科学环境基本都支持,R, SAS,SPARK等。
Anaconda Kernel安装
conda环境安装特别简单,首先确保anaconda环境已经集成了Ipython,默认是已经集成了。其次在用户级别下执行一下命令即可:
1 | $ $your_anaconda_install_path/bin/ipython kernel install --user --name anaconda |
执行完成后,便会在jupyterhub中看到名为anaconda的kernel,还是再重申下,这个命令需要在每个用户级别下local执行。new后便可使用anaconda环境中的所有python lib。
R Kernel安装
安装R Kernel之前需要安装r-irkernel,这步我们使用anaconda来安装:
1 | $ conda install -c r r-irkernel |
安装完毕之后,运行R命令:
1 | IRkernel::installspec() |
执行完成后,便可在jupyterhub中看到名为R的kernel。
使用
管理
作为多用户web应用,势必需要管理员的角色,管理员的配置在jupyterhub生成的config文件里面进行修改:
1 | $ vim jupyterhub_config.py |
修改如下:
1 | c.Authenticator.admin_users = ('zhangsan','lisi') |
然后重新启动jupyter,用以上配置的用户登录,即可使用管理功能。
用户认证
Jupyterhub支持多种认证方式:PAM和LDAP,默认使用的是PAM,即与系统用户层使用同一认证管理,用户名与密码与系统配置的相同。
由于比较懒,所以这里采用无密码登陆认证方式。
首先用py3安装一个插件:
1 | $ ./pip3.6 install jupyterhub-dummyauthenticator -i https://pypi.douban.com/simple/ |
然后,在配置文件中修改此配置:
1 | c.JupyterHub.authenticator_class = 'dummyauthenticator.DummyAuthenticator' |
具体细节可以参考这个问题。
另外,jupyterhub默认是不允许root组用户进行访问和使用,如果需要此类配置,需要修改源码 site-packages/jupyterhub/spawner.py,找到如下代码块,添加如下:
1 | def get_args(self): |
Theme
其实Jupyterhub的主题已经非常简约唯美了,基本除了对风格有非常强的偏执一般不会care这样的theme。不过有一点,比较偏好使用暗色系的主题的用户,例如IDE用的是PyCharm Darcula的,可能会觉得不适应,这时候我们可以使用第三方package来实现这一点。
项目地址:jupyter-themes
安装:
1 | $ pip install --upgrade jupyterthemes==0.17.3 -i https://pypi.douban.com/simple |
需要注意,这个包有不少依赖,需要评估对其他lib的影响
安装theme,具体参数请参考官方文档:
1 | $ jt -t chesterish -T -N -altp -fs 10 -nfs 11 -tfs 10 |
命令执行完成后,事实上会在所在用户的home folder下面的.jupyter文件夹内生成所需要的渲染和样式文件。而Jupyterhub启动后,面向每个用户的环境实际上是分别单独启动了一个Jupyter的web server,如下图。因此为了让主题生效,我们需要重启自己的Jupyter Server。
然后就可以使用新的主题。其实这里也可以发现,hub上面的渲染还是原来的明色系,这里的主题只会在server内生效。
Link to this post: JupyterHub搭建