Ceph性能测试:Jupyter Notebook安装与配置

jupyter

什么是Jupyter

Jupyter Notebooks 是一款开源的网络应用,我们可以将其用于创建和共享代码与文档。他提供了一个在线平台,你可以在其中编写你的代码、运行代码、查看输出、可视化数据并查看结果。这个工具在数据科学/机器学习领域被广泛应用,但是我觉得用来作为系统演示、系统的性能监测也是一个很不错的工具!下面我会在接下来的文章里使用jupyter对Ceph的性能进行实时监测以及可视化,本篇主要介绍如何安装Jupyter,以及如何进行相关的配置。

安装Jupyter

在Centos等Linux系统中使用pip命令(python 2)很容易安装jupyter:

pip install ipython jupyter notebook

安装如果遇到问题,请查看最后一节:问题总结。

配置远程登录

由于我是在服务器上对Ceph进行性能测试,所以我希望能远程访问,下面进行远程访问的配置,首先运行下面的命令产生配置文件:

jupyter notebook --generate-config

为了比较安全的访问服务器资源,我们需要设置登录密码和设置https来实现安全登录。如果有条件可以通过安全认证中心来发放秘钥和认证。首先打开ipython,生成sha1的密码,命令如下:

from notebook.auth import passwd
passwd()

设置好密码之后会产生一个密钥:

Enter password:
Verify password:
Out[2]: 'sha1:1b4ea9662b35:3e3d6a821d264d466f125a0939623c05e7b66007'

然后打开配置文件的路径,进行相应的设置,记得取消注释:

c.NotebookApp.password = 'sha1:'
c.NotebookApp.port = 8888
# 如果使用'*'可能会出现问题
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False

安装完成之后,启动jupyter,然后在浏览器中输入服务器地址以及":port"即可使用。

安装插件管理器

安装插件:

python -m pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user --skip-running-check 

安装好之后,重新刷新或重启jupyter,即可看到插件管理器的菜单Nbextension:

插件管理器菜单

打开该菜单,可以看到里面各种各样的菜单,勾选即可安装:

安装插件

这篇文章总结了那些比较实用的插件:https://www.jiqizhixin.com/articles/2018-12-20-12。

问题总结

安装出现编码错误

在安装Jupyter之后,出现了下面的问题:

在python2.7环境下,安装jupyter notebook后,输入下面的命令之后,打开jupyter失败:

jupyter notebook

错误log如下:

The Jupyter HTML Notebook.

这将启动一个基于tornado的HTML笔记本服务器,它提供一个html5/
javascript笔记本客户端。

Traceback (most recent call last):
  File "/anaconda2/envs/python3/bin/jupyter-notebook", line 11, in 
    sys.exit(main())
  File "/anaconda2/envs/python3/lib/python2.7/site-packages/jupyter_core/application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/anaconda2/envs/python3/lib/python2.7/site-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "", line 2, in initialize
  File "/anaconda2/envs/python3/lib/python2.7/site-packages/traitlets/config/application.py", line 89, in catch_config_error
    app.print_help()
  File "/anaconda2/envs/python3/lib/python2.7/site-packages/traitlets/config/application.py", line 385, in print_help
    self.print_subcommands()
  File "/anaconda2/envs/python3/lib/python2.7/site-packages/traitlets/config/application.py", line 377, in print_subcommands
    print(os.linesep.join(lines))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range(128)

Google后参考github上的一个issue,https://github.com/jupyterlab/jupyterlab/issues/5345,看到有人切换语言解决问题的:

LANG=zn jupyter notebook

于是在.bashrc文件中添加:

alias jupyter='LANG=zn jupyter'

插件管理器依赖错误

在安装插件管理器时同样遇到了问题:

python -m pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user --skip-running-check 

出现six版本过低,于是使用pip安装指定版本:

pip install six==1.12.0

下一篇我讲介绍如何在Ceph中应用Jupyter。

参考资料

  1. Jupyter notebook extensions 扩展插件的安, https://blog.csdn.net/dyw_666666/article/details/81122095
  2. Jupyter打开出错:'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range(128), https://www.jianshu.com/p/516eb2a57ee6
  3. pip install 安装指定版本的包, https://blog.csdn.net/youcharming/article/details/51073911
  4. 基于CentOS7安装Jupyter Notebook, https://blog.csdn.net/qq_16149777/article/details/82455287
  5. 设置 jupyter notebook 可远程访问, https://blog.csdn.net/simple_the_best/article/details/77005400
  6. jupyter throwing error: socket.gaierror: [Errno -2] Name or service not known, https://stackoverflow.com/questions/52706238/jupyter-throwing-error-socket-gaierror-errno-2-name-or-service-not-known
  7. jupyter使用教程, https://www.zhihu.com/question/59392251

你可能感兴趣的:(Ceph性能测试:Jupyter Notebook安装与配置)