大数据平台搭建好后,我们要做的就是探索数据,探索数据就需要查询,做可视化,那么一款好用自助查询可视化工具,你值得拥有!
一、Zeppelin介绍
Apache Zeppelin是一个让交互式数据分析变得可行的基于网页的开源框架。Zeppelin提供了数据分析、数据可视化等功能。
Zeppelin 是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、Hbase、 Markdown、Shell、MySQL、postgresql、JDBC等等。
Zeppelin提供了Interpreter(解释器)来连接各种数据源,也根据提供的API可以开发新的interpreter。
二、软件部署
环境
- jdk
- 最新版本的Zeppelin(http://zeppelin.apache.org/download.html)
下载zeppelin-XX-bin-all.tgz,拷贝到准备部署的主机上,然后解压。
代码语言:javascript复制tar –zxvf zeppelin-XX-bin-all.tgz
解压后看到目录结构如下:
配置Java环境变量
copy原来的conf/zeppelin-env.sh.template命名为zeppelin-env.sh,在conf/zeppelin-env.sh添加Java路径。
配置地址端口号
copy 原来的conf/zeppelin-site.xml.template修改配置文件conf/zeppelin-site.xml。默认端口是8080,如果8080端口没有被占用,也可以使用默认端口,不用修改。
启动
bin/zeppelin-daemon.sh start,查看日志,首次启动会创建日志目录
启动成功,打开前台web页面 172.1.1.1:8888
新建notebook,测试(默认为Scala语言)
三、连接hive数据仓库
配置interpreter
在前台页面打开interpreter,找到JDBC,配置参数
HiveServer2 的用户名和密码可以通过编辑 $HIVE_HOME/conf/hive-site.xml 属性:
• hive.server2.thrift.client.user
• hive.server2.thrift.client.password
如果没有配置该属性,那么上面的interpreter参数中的用户和密码可以不用配置。
下面就可以使用Zeppelin连接hive进行查询,首先新建一个notebook:
验证是否成功连接hive,输入:show databases,运行如下:
输入查询SQL脚本,运行如下图:
- keys:指横轴
- Values:指纵轴
可以通过拖拉方式指定Key和Values(横轴纵轴的比例是自适应的)
其中可视化的表现形式可以选择:
四、权限设置
在登录的时候我们发现Zeppelin默认登录时不需要输入用户名密码的,也就是匿名登录模式anonymous,通过查看配置文件conf/zeppelin-site.xml可以发现,默认配置的是允许匿名访问。
如何修改权限呢?
- 首先我们修改该配置zeppelin.anonymous.allowed的value为false,表示不允许匿名访问
- conf/shiro.ini文件,显然zeppelin采用了shiro作为他的验证登录权限控制框架,修改文件最后一行
把/=anon修改为/=authc,这样重启zeppelin后访问我们的zeppelin主页就变成这个样子了。(注意右上角编程了login)
看见右上角的Login按钮了吧,点击login但是没有发现注册按钮。
- 需要修改conf/shiro.ini配置文件,其实Zeppelin已经给你配好了几个用户,再次再新增一个用户
然后重启Zeppelin,点击login登录,输入刚才的账号密码登录,可以看到登录上去了。
当然权限控制远不止如此。比如:
打开刚才的notebook,可以看到右上角有一个小锁的标志,点击,可以输入对应的用户对该notebook操作权限。
使用其他用户登录会提示没有权限
可以看到可以对每一个notebook进行权限控制,这样在分享自己的分析结果中很方便。
五、总结
Zeppelin的解释器设计非常巧妙,及时官方没有,你也可以开发自己的解释器(现在已经很完善,支持各种连接)。zeppelin支持MD、shell、python、R、SQL、scala等多种语言,在notebook中可以使用多种语言结合markdown和可视化在探索数据后,随即做一个很漂亮的分析报告,不用再机芯数据导出,数据可视化,多个工具之间进行迁移,大大提高工作效率。对于分析团队很有必要引入一下该组件,新的分析团队成员再也不用担心开发环境配置了~