版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1433143
五、Hue、Zeppelin比较
上一节简单介绍了Hue这种Hadoop生态圈的数据可视化组件,本节讨论另一种类似的产品——Zeppelin。首先介绍一下Zeppelin,然后说明其安装的详细步骤,之后演示如何在Zeppelin中添加MySQL翻译器,最后从功能、架构、使用场景几方面将Hue和Zeppelin做一个比较。1. Zeppelin简介
Zeppelin是一个基于Web的软件,用于交互式地数据分析。一开始是Apache软件基金会的孵化项目,2016年5月正式成为一个顶级项目(Top-Level Project,TLP)。Zeppelin描述自己是一个可以进行数据摄取、数据发现、数据分析、数据可视化的笔记本,用以帮助开发者、数据科学家以及相关用户更有效地处理数据,而不必使用复杂的命令行,也不必关心集群的实现细节。Zeppelin的架构图如下所示。 从图中可以看到,Zeppelin具有客户端/服务器架构,客户端一般就是指浏览器。服务器接收客户端的请求,并将请求通过Thrift协议发送给翻译器组。翻译器组物理表现为JVM进程,负责实际处理客户端的请求并与服务器进行通信。 翻译器是一个插件式的体系结构,允许任何语言/后端数据处理程序以插件的形式添加到Zeppelin中。特别需要指出的是,Zeppelin内建Spark翻译器,因此不需要构建单独的模块、插件或库。Spark翻译器的架构图如下所示。 当前的Zeppelin已经支持很多翻译器,如Zeppelin 0.6.0版本自带的翻译器有alluxio、cassandra、file、hbase、ignite、kylin、md、phoenix、sh、tajo、angular、elasticsearch、flink、hive、jdbc、lens、psql、spark等18种之多。插件式架构允许用户在Zeppelin中使用自己熟悉的特定程序语言或数据处理方式。例如,通过使用%spark翻译器,可以在Zeppelin中使用Scala语言代码。 在数据可视化方面,Zeppelin已经包含一些基本的图表,如柱状图、饼图、线形图、散点图等,任何后端语言的输出都可以被图形化表示。 用户建立的每一个查询叫做一个note,note的URL在多用户间共享,Zeppelin将向所有用户实时广播note的变化。Zeppelin还提供一个只显示查询结果的URL,该页不包括任何菜单和按钮。用这种方式可以方便地将结果页作为一帧嵌入到自己的web站点中。2. Zeppelin安装配置
下面用一个典型的使用场景——使用Zeppelin运行SparkSQL访问Hive表,在一个实验环境上说明Zeppelin的安装配置步骤。(1)安装环境
12个节点的Spark集群,以standalone方式部署,各个节点运行的进程如下表所示。主机名 | 运行进程 |
|---|---|
nbidc-agent-03 | NameNode、Spark Master |
nbidc-agent-04 | SecondaryNameNode |
nbidc-agent-11 | ResourceManager、DataNode、NodeManager、Spark Worker |
nbidc-agent-12 | DataNode、NodeManager、Spark Worker |
nbidc-agent-13 | DataNode、NodeManager、Spark Worker |
nbidc-agent-14 | DataNode、NodeManager、Spark Worker |
nbidc-agent-15 | DataNode、NodeManager、Spark Worker |
nbidc-agent-18 | DataNode、NodeManager、Spark Worker |
nbidc-agent-19 | DataNode、NodeManager、Spark Worker |
nbidc-agent-20 | DataNode、NodeManager、Spark Worker |
nbidc-agent-21 | DataNode、NodeManager、Spark Worker |
nbidc-agent-22 | DataNode、NodeManager、Spark Worker |
操作系统:CentOS release 6.4 Hadoop版本:2.7.0 Hive版本:2.0.0 Spark版本:1.6.0(2)在nbidc-agent-04上安装部署Zeppelin及其相关组件
前提:nbidc-agent-04需要能够连接互联网。(3)配置zeppelin
(4)启动zeppelin
在nbidc-agent-04上执行下面的指令。zeppelin-daemon.sh start(5)测试
从浏览器输入http://nbidc-agent-04:9090/,如下图所示。 点击‘Interpreter’菜单,配置并保存spark解释器,如下图所示。 配置并保存hive解释器,如下图所示。 点击‘NoteBook’->‘Create new note’子菜单项,建立一个新的查询并执行,结果如下图所示。 说明:这是一个动态表单SQL,SparkSQL语句为:%sql
select * from wxy.t1 where rate > ${r} 第一行指定解释器为SparkSQL,第二行用${r}指定一个运行时参数,执行时页面上会出现一个文本编辑框,输入参数后回车,查询会按照指定参数进行,如图会查询rate > 100的记录。3. 在Zeppelin中添加MySQL翻译器
数据可视化的需求很普遍,如果常用的如MySQL这样的关系数据库也能使用Zeppelin查询,并将结果图形化显示,那么就可以用一套统一的数据可视化方案处理大多数常用查询。Zeppelin本身还不带MySQL翻译器,幸运的是已经有MySQL翻译器插件了。下面说明该插件的安装步骤及简单测试。(1)编译MySQL Interpreter源代码
cd /home/work/tools/
git clone https://github.com/jiekechoo/zeppelin-interpreter-mysql
mvn clean package(2)部署二进制包
mkdir /home/work/tools/incubator-zeppelin/interpreter/mysql
cp /home/work/tools/zeppelin-interpreter-mysql/target/zeppelin-mysql-0.5.0-incubating.jar /home/work/tools/incubator-zeppelin/interpreter/mysql/
# copy dependencies to mysql directory
cp commons-exec-1.1.jar mysql-connector-java-5.1.6.jar slf4j-log4j12-1.7.10.jar log4j-1.2.17.jar slf4j-api-1.7.10.jar /home/work/tools/incubator-zeppelin/interpreter/mysql/
vi /home/work/tools/incubator-zeppelin/conf/zeppelin-site.xml 在zeppelin.interpreters 的value里增加一些内容“,org.apache.zeppelin.mysql.MysqlInterpreter”,如下图所示。(3)重启Zeppelin
zeppelin-daemon.sh restart(4)加载MySQL Interpreter
打开主页http://nbidc-agent-04:9090/,‘Interpreter’ -> ‘Create’,完成类似下图的页面,完成点击‘Save’
(5)测试
%mysql
select date_format(create_time,'%Y-%m-%d') d, count(*) c
from information_schema.tables
group by date_format(create_time,'%Y-%m-%d')
order by d; 查询结果的表格表示如下图所示。 查询结果的柱状图表示如下图所示。 查询结果的饼图表示如下图所示。 查询结果的堆叠图表示如下图所示。 查询结果的线形图表示如下图所示。 查询结果的散点图表示如下图所示。 报表模式的饼图表示如下图所示。 可以点击如下图所示的链接单独引用此报表 单独的页面能根据查询的修改而实时变化,比如将查询修改为:select date_format(create_time,'%Y-%m-%d') d, count(*) c
from information_schema.tables
where create_time > '2016-06-07'
group by date_format(create_time,'%Y-%m-%d')
order by d; 增加了where子句,在运行此查询,结果如下图所示。 单独链接的页面也随之自动发生变化,如下图所示。5. Hue与Zeppelin比较
(1)功能
(2)架构
(3)使用场景