spark交互数据探索及周期执行软件Zeppelin
问题导读:
1.什么是Zeppelin?2.Zeppelin有哪几种分享方式?
http://www.aboutyun.com/static/image/hrline/4.gif
本篇文章着重介绍如何将您制作好的notebook / report 分享给其他人。
根据分享的对象不同,可以采用不同的分享方式
1. 内部分享这种分享方式是分享给同一个部门或者同一个项目组里面的同学。
大家沟通比较方便,对权限控制也比较简单。
如上图,只需要选择report选项再将地址发给你的同事或者小伙伴就好啦。
这种分享方式比较简单粗暴,粗暴就粗暴在,如果多个人同时打开编辑,说不定就互相乱套啦。
而且如果有一个人只是想看看报表的话,可能还会被其他东西误导。
2. iframe 方式分享
这种方式也算是比较简单的一种,只不过需要自己准备一个页面并把图表加载进来。
选择“Link this paragraph”
然后复制URL
最后嵌入到你的Dashboard 之中即可
<iframe src="http://< ip-address >:< port >/#/notebook/2B3QSZTKR/paragraph/...?asIframe" height="" width="" ></iframe>
你还可以组合多种paragraph,比如文字说明、图表、表格等等。
看看官方自己的例子:
3. 加上权限的安全分享
如果一个人对Html或者Zeppelin的原理比较清楚,那么就有可能从iframe的地址反查到Notebook的真实URL。并且可能会很好奇的进行修改之类的操作这个时候我们就需要加上权限控制。
Zeppelin已经集成了Apache Shiro,因此是有很强的权限控制能力的。只不过目前做的比较简单。
配置文件主要在conf/shiro.ini
我们主要关注下面几个section:users / roles
# List of users with their password allowed to access Zeppelin.
# To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configur ... uration-INISections
admin = password1
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
role1 = *
role2 = *
role3 = *
users 自然不必说,就是账号了。 其中admin 应该是一个比较特殊的账号。
需要特别说明一下的是roles. 角色部分,Shiro可以做得非常细致。但是在查阅了官方说明之后,Zeppelin把事情简化了。 在配置文件之中,只配置角色的名称,每个角色都是全部的权限。 然后控制Read / Write / Manage 的权限,是在Notebook UI 来设置:
UI 上面, Zeppelin还比较贴心的做了一个自动提示的功能。
最后,还需要我们在配置文件之中开启权限控制。
# 原始状态
/** = anon
#/** = authc
# 新的状态
#/** = anon
/** = authc
即将anon注释,反注释authc
可能role1 / role2不太好记忆,可以尝试下面的写法:
admin =222222
reader = 111111, readers
writer = 111111, writers
readers = *
writers = *
owners= *
如果一个reader想要去修改内容,那么就会遇到下面的弹窗:
所以,一个比较稳妥的办法时候结合上面的2与3两种方法。
注意: Shiro的配置修改之后,需要重启Zeppelin使其生效。
4. 分享给全世界
Zeppelin 还创建了一个分享的社区。 我们可以将自己的作品分享到社区之中,给全世界的人来看。
首先我们要到https://www.zeppelinhub.com/创建你自己的账号。 邮箱即可~。
接下来我们要做的,就是将自己的Notebook提交到ZeppelinHub 之中。
官方说明:http://help.zeppelinhub.com/zeppelin_integration/
感觉界面使用起来非常简单,也不啰嗦了~ 简单的说就是在界面上创建一个Instance,然后记住自己的user key / token string 并把这个信息写到本地的配置文件(conf/zeppelin-env.sh)即可。
export ZEPPELIN_NOTEBOOK_STORAGE="org.apache.zeppelin.notebook.repo.VFSNotebookRepo, org.apache.zeppelin.notebook.repo.zeppelinhub.ZeppelinHubRepo"
export ZEPPELINHUB_API_ADDRESS="ADDRESS_OF_ZEPPELINHUB_SERVICE" (e.g. https://www.zeppelinhub.com)
export ZEPPELINHUB_API_TOKEN="YOUR_TOKEN_STRING"
# With user key if provided
export ZEPPELINHUB_USER_KEY="YOUR_USER_KEY"
总结:
总体来说,Zeppelin是一个非常强大的框架,整合了很多计算能力,同时在分享上面也做了很多工作。
只不过如果你需要给老板一个非常绚丽的图,Zeppelin默认的图表功能还是弱了一点。可以通过结合Highcharts / D3.js 等其他的js 类库进行绘图。如果你是一个数据工作者,需要交互式的进行数据探索,或者你有一些Spark 相关的简单任务,需要周期性的执行,Zeppelin是一个非常好的选择。
来源:flyml作者:rangerwolf
页:
[1]