Jupyter DashBoards 另类全家桶

概述

今天看到一个非常好的功能 Jupyter DashBoards

基于Jupyter的仪表盘,非常Nice的功能,可以实现定制化,可视化与代码的分离

然后在这个基础上依次修正以及补充,基于Jupyter的一些误区和知识

本机的环境是 py3jupyter

感觉今天最大的收货是对学会看 docker 的配置文件 + 学会查找 github issue

插件-nb extensions

Git项目地址是,nbextensions 以及 nbextensions_configurator。前者是各类型有用的插件,后者是能够直接在Jupyter 上图形话调节界面的功能。

这里今天得到的收获主要是基于虚拟环境的一个配置问题

在官网上,安装完 nbextensions 之后,本质是将一
大堆插件放在下面目录下

/Users/{user}/Library/Jupyter/extensions

接下来进行插件激活和路径指定,官网上的提示使用的是

jupyter contrib nbextension install --user

如果这么操作的话,是在用户目录 例如 /home/user/.jupyter 下面生成 nbextensions 的配置, 这会导致环境不隔离的情况。

正确的做法,切换到新的环境下的jupyter,执行

jupyter contrib nbextension install --sys-prefix

这样就做到只影响该环境下的Jupyter,在某环境下的 /etc/jupyter 文件夹下产生对应的配置文件,nb的 和 notebook的都有,如果对于 notebook的配置有特殊的配置,可以写在这里,例如密码,token等。

如果要删除该内容,install 替换为 uninstall。

如果因为选择的是 users 会导致的问题是 no module named nbextensions,某些和root 环境不一致的环境找不到配置文件

jupynter 版本的问题

2017年06月04日,jupyter notebook 的版本已经升级到了5.0,但是通过 pip 安装的 nbextensions 的插件所写的代码,是4.x的程序,这个通过找 github issues, 发现作者已经在 master 分支上做了修改,nbextensions.py 这个文件,修改如下代码即可

try:
    # notebook > 4.2
    from notebook.nbextensions import _get_nbextension_dir as get_nbext_dir
except:
    # notebook <= 4.2
    from notebook.nbextensions import _get_nbext_dir as get_nbext_dir

Jupyter DashBoard

代码组成

这是一个非常另类的套装, 由以下几个部分组成

jupyter/dashboards, notebook 插件将代码转化为可定制的 dashboard

dashboards_bundlers,notebook 插件将定制好的dashboard 输出到 server端

dashboards_server,nodejs web框架,主要作用是与juypter server 通信展示只读功能的dashboard

kernel_gateway,一个中间的类似于代理的web框架,用于和dashboard server 通信

dashboards_setup ,一套基于docker的服务范例,讲解各个服务如何配置

架构流程如下图:

image.png

整完这一套,模型开发人员,两行代码就一套定制化的BI系统。这套系统搭建的时候最难的地方是连接

dashboard 连接

  • Jupyter Notebook

这个是一端,启动的时候需要配置一下启动token和Server 的端口,方便和另一端加密验证。

# token 的配置写在了配置文件里
# 端口设置在环境变量中
jupyter notebook
  • Dashboard Server

用于HTML展示。有两个主要输入,一个是token作为加密验证的功能,一个是 gateway的地址 http://host:port 即可

# 和 kernal 指定的ip 一致
# token 设置在了环境变量里
jupyter-dashboards-server --KERNEL_GATEWAY_URL=http://{kernal}:8888
  • kernal gateway

这个是在 dashboard_server 和 jupyter server 之间的一道桥梁。它和jupyter server的连接方式比较神奇,应该是通过jupyter 内核来通信,也就是�二者需要在同一台机器上即可。

但是最合理的方式是,kernal gateway 和 jupyter 在同一目录下,统一端口上启动,否则将会有一些模板加载等小错,这里更神奇的是同一端口。

jupyter kernelgateway --KernelGatewayApp.ip=0.0.0.0
  • 环境变量

除了命令行直接传进去的配置,为了保持独立性,还需要在环境变量中增加两项的设置

export DASHBOARD_SERVER_URL=http://{dash_server_host}:3000
export KG_AUTH_TOKEN='xxxxxxxxxxxxxxxxxxxx' # 与Jupyter Notebook 的验证Token保持一致

环境隔离

在安装这些工具的时候,他们很多是 nbextension,所以启用的时候注意环境的隔离
例如 dashboard的启动方式 jupyter dashboards quick-setup --sys-prefix
这样就做到与环境隔离了

Docker当文档

这一部分,其实我是感觉最精华的一部分。

首先我大概了解了一下 docker是什么

相当于 一台机器上的 一个 container 容器,虚拟机,跟本机系统环境无关,能在docker的镜像中跑成功的程序,一定能在其他机器上跑成功。

我自己按照 dashboards_setup的教程,在本地拉了三个镜像服务,然后启动,结果耗时两小时,发现可以跑成功

看是看懂了MakeFile的意义,我直接去看了这三个镜像分别干了什么,notebook 和 dserver 都和我想的一样

后来发现困扰我最久的kernal的启动方式,真实跪了总体配置

kernel_gateway:
   build:
     context: .
     dockerfile: Dockerfile.kernel
     args:
       # pip versioning by default
       # Replace with local tarballs like /src/jupyter_declarativewidgets-someversion.tar.gz
       DECLWIDGETS_PKG: 'jupyter_declarativewidgets==0.7.*'
       IPYWIDGETS_PKG: 'ipywidgets==5.1.*'
   volumes_from:
     - notebook
   environment:
     KG_ALLOW_ORIGIN: '*'

得出的结论是 和 notebook 共享启动地址

在看具体配置

# run kernel gateway, not notebook server
CMD ["jupyter", "kernelgateway", "--KernelGatewayApp.ip=0.0.0.0"]

得出的结论是用默认端口号,共享端口

之后我再本地按照这种方式启动了,kernal 直接成功

这件事情让我得到了很大的启示,docker 真的很强大,这是最清楚的文档,能让机器看懂的文档,人更能看懂

其他

这个主要是参考,「工具控」| TL001. 装扮你的Jupyter
, 学了很厉害的几个小技巧

magic

只要在 notebook 执行 %% magic 就能看到介绍
例如

%timeit range(1000)

%env PATH

ipython kernal 预加载

创建配置文件,就能在内核中添加一些预加载的代码了

ipython profile create

自己添加的代码如下:

c.InteractiveShellApp.exec_lines = [
        "import pandas as pd",
        "import numpy as np",
        "import scipy.stats as spstats",
        "import scipy as sp",
        "import matplotlib.pyplot as plt",
        "import matplotlib",
        "matplotlib.style.use('ggplot')",
       "%load_ext autoreload",
616    "%autoreload 2"
]

c.IPKernelApp.matplotlib = 'inline'

c.InlineBackend.figure_format = 'retina'



jupyter notebook

jupyter notebook 的配置文件,分为两种一种是全局的,一种是环境的,环境的上面讲过了,主要是在 etc 环境下,全局的就是按照官网的生成文件的方式就能搞定。

jupyter-themes

这是一个很厉害的插件,能实现将Jupyter 设置各种 背景,但是绘图比较蛋疼,还是以白底jupyter 为主吧

这个知道怎么玩酷炫就好了

# 设置黑色背景
jt -t chesterish
# 恢复原样
jt -r
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,499评论 15 147
  • 原文链接翻译版链接 Jupyter Notebook Jupyther notebook ,也就是一般说的 Ipy...
    Mingooo阅读 16,360评论 0 36
  • 写作群里有人推荐未来简史,微信公号里也有看到未来简史的读后感,偶然听逻辑思维罗胖也说了一嘴。是这个节目或者是他说的...
    Maria_X阅读 182评论 4 3
  • 人生有几次毕业 幼儿 小学 中学 大学 似乎已完成了学业 但果真如此吗? 其实社会大学 永不会毕业 除非你已不在 ...
    黄土高坡上的风姑娘阅读 111评论 0 0