当前位置: 首页 > news >正文

基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(五)

目录

五、Hue、Zeppelin 比较

1. Zeppelin 简介

2. Zeppelin 安装配置

(1)安装环境

(2)Zeppelin 及其相关组件

(3)配置 Zeppelin

(4)启动 Zeppelin

(5)测试

3. 在 Zeppelin 中添加 MySQL 翻译器

(1)编译 MySQL Interpreter 源代码

(2)部署二进制包

(3)重启 Zeppelin

(4)加载 MySQL Interpreter

(5)测试

4. Hue 与 Zeppelin 比较

(1)功能

(2)架构

(3)使用场景


五、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

NameNodeSpark Master

nbidc-agent-04

SecondaryNameNode

nbidc-agent-11

ResourceManagerDataNodeNodeManagerSpark Worker

nbidc-agent-12

DataNodeNodeManagerSpark Worker

nbidc-agent-13

DataNodeNodeManagerSpark Worker

nbidc-agent-14

DataNodeNodeManagerSpark Worker

nbidc-agent-15

DataNodeNodeManagerSpark Worker

nbidc-agent-18

DataNodeNodeManagerSpark Worker

nbidc-agent-19

DataNodeNodeManagerSpark Worker

nbidc-agent-20

DataNodeNodeManagerSpark Worker

nbidc-agent-21

DataNodeNodeManagerSpark Worker

nbidc-agent-22

DataNodeNodeManagerSpark Worker

  • 操作系统:CentOS release 6.4
  • Hadoop 版本:2.7.0
  • Hive 版本:2.0.0
  • Spark 版本:1.6.0

(2)Zeppelin 及其相关组件

        在 nbidc-agent-04 上安装部署 Zeppelin 及其相关组件。前提:nbidc-agent-04 需要能够连接互联网。

  1. 安装 Git:在 nbidc-agent-04 上执行下面的指令。
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel  
    yum install gcc perl-ExtUtils-MakeMaker  
    yum remove git  
    cd /home/work/tools/  
    wget https://github.com/git/git/archive/v2.8.1.tar.gz  
    tar -zxvf git-2.8.1.tar.gz  
    cd git-2.8.1.tar.gz  
    make prefix=/home/work/tools/git all  
    make prefix=/home/work/tools/git install
  2. 安装 Java:在 nbidc-agent-03 机器上执行下面的指令拷贝 Java 安装目录到 nbidc-agent-04机器上。
    scp -r jdk1.7.0_75 nbidc-agent-04:/home/work/tools/
  3. 安装 Apache Maven:在 agent-04 上执行下面的指令。
    cd /home/work/tools/  
    wget ftp://mirror.reverse.net/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz  
    tar -zxvf apache-maven-3.3.9-bin.tar.gz
  4.  安装 Hadoop 客户端:在 nbidc-agent-03 机器上执行下面的指令拷贝 Hadoop 安装目录到 nbidc-agent-04 机器上。
    scp -r hadoop nbidc-agent-04:/home/work/tools/
  5. 安装 Spark 客户端:在 nbidc-agent-03 机器上执行下面的指令拷贝 Spark 安装目录到 nbidc-agent-04 机器上。
    scp -r spark nbidc-agent-04:/home/work/tools/
  6. 安装 Hive 客户端:在 nbidc-agent-03 机器上执行下面的指令拷贝 Hive 安装目录到 nbidc-agent-04 机器上。
    scp -r hive nbidc-agent-04:/home/work/tools/
  7. 安装 phantomjs:在 nbidc-agent-04 上执行下面的指令。
    cd /home/work/tools/  
    tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
  8. 下载最新的 zeppelin 源码:在 nbidc-agent-04 上执行下面的指令。
    cd /home/work/tools/  
    git clone https://github.com/apache/incubator-zeppelin.git
  9. 设置环境变量:在 nbidc-agent-04 上编辑 /home/work/.bashrc 文件。
    vi /home/work/.bashrc
    # 添加下面的内容  
    export PATH=.:$PATH:/home/work/tools/jdk1.7.0_75/bin:/home/work/tools/hadoop/bin:/home/work/tools/spark/bin:/home/work/tools/hive/bin:/home/work/tools/phantomjs-2.1.1-linux-x86_64/bin:/home/work/tools/incubator-zeppelin/bin;  
    export JAVA_HOME=/home/work/tools/jdk1.7.0_75  
    export HADOOP_HOME=/home/work/tools/hadoop  
    export SPARK_HOME=/home/work/tools/spark  
    export HIVE_HOME=/home/work/tools/hive  
    export ZEPPELIN_HOME=/home/work/tools/incubator-zeppelin  
    # 保存文件,并是设置生效  
    source /home/work/.bashrc
  10. 编译 zeppelin 源码:在 nbidc-agent-04 上执行下面的指令。
    cd /home/work/tools/incubator-zeppelin  
    mvn clean package -Pspark-1.6 -Dspark.version=1.6.0 -Dhadoop.version=2.7.0 -Phadoop-2.6 -Pyarn -DskipTests

(3)配置 Zeppelin

  1. 配置 zeppelin-env.sh 文件:在 nbidc-agent-04 上执行下面的命令。
    cp /home/work/tools/incubator-zeppelin/conf/zeppelin-env.sh.template  /home/work/tools/incubator-zeppelin/conf/zeppelin-env.sh 
    vi /home/work/tools/incubator-zeppelin/conf/zeppelin-env.sh
    # 添加下面的内容  
    export JAVA_HOME=/home/work/tools/jdk1.7.0_75  
    export HADOOP_CONF_DIR=/home/work/tools/hadoop/etc/hadoop  
    export MASTER=spark://nbidc-agent-03:7077
  2. 配置 zeppelin-site.xml 文件:在 nbidc-agent-04 上执行下面的命令。
    cp /home/work/tools/incubator-zeppelin/conf/zeppelin-site.xml.template  /home/work/tools/incubator-zeppelin/conf/zeppelin-site.xml
    vi /home/work/tools/incubator-zeppelin/conf/zeppelin-site.xml
    # 修改下面这段的value值,设置zeppelin的端口为9090  
    <property>  <name>zeppelin.server.port</name>  <value>9090</value>  <description>Server port.</description>  
    </property>
  3. 将 hive-site.xml 拷贝到 Zeppelin 的配置目录下:在 nbidc-agent-04 上执行下面的指令。
    cd /home/work/tools/incubator-zeppelin  
    cp /home/work/tools/hive/conf/hive-site.xml .

(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_test 的 note,如下图所示。

  • 输入下面的查询语句,按创建日期统计建立表的个数。
%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 子句,在运行此查询,结果如下图所示。

        单独链接的页面也随之自动发生变化,如下图所示。

4. Hue 与 Zeppelin 比较

(1)功能

  • Zeppelin 和 Hue 都能提供一定的数据可视化的功能,都提供了多种图形化数据表示形式。单从这点来说,个人认为功能类似,大同小异,Hue 可以通过经纬度进行地图定位,这个功能我在 Zeppelin 0.6.0 上没有找到。
  • Zeppelin 支持的后端数据查询程序较多,0.6.0 版本缺省有 18 种,原生支持 Spark。而 Hue 的 3.9.0 版本缺省只支持 Hive、Impala、Pig 和数据库查询。
  • Zeppelin 只提供了单一的数据处理功能,包括前面提到的数据摄取、数据发现、数据分析、数据可视化等都属于数据处理的范畴。而Hue的功能相对丰富的多,除了类似的数据处理,还有元数据管理、Oozie 工作流管理、作业管理、用户管理、Sqoop 集成等很多管理功能。从这点看,Zeppelin 只是一个数据处理工具,而 Hue 更像是一个综合管理工具。

(2)架构

  • Zeppelin 采用插件式的翻译器,通过插件开发,可以添加任何后端语言和数据处理程序。相对来说更独立和开放。
  • Hue 与 Hadoop 生态圈的其它组件密切相关,一般都与 CDH 一同部署。

(3)使用场景

  • Zeppelin 适合单一数据处理、但后端处理语言繁多的场景,尤其适合 Spark。
  • Hue 适合与 Hadoop 集群的多个组件交互、如 Oozie 工作流、Sqoop 等联合处理数据的场景,尤其适合与 Impala 协同工作。
http://www.dtcms.com/a/306124.html

相关文章:

  • C语言数据结构(1)顺序表专题2.顺序表的应用
  • YOLO融合MogaNet中的ChannelAggregationFFN模块
  • LeetCode 53 - 最大子数组和
  • 明智运用C++异常规范(Exception Specifications)
  • AI 驱动的软件测试革新:框架、检测与优化实践
  • 洛谷刷题7.30
  • 【力扣热题100】哈希——最长连续序列
  • Redis知识点(2)
  • Kong API Gateway的十年进化史
  • Git提交代码完整流程
  • 创建两个 C 语言文件,实现使用共享内存和信号量集进行两个进程间的双向聊天功能。这两个文件分别为chat1.c和chat2.c,它们可以互相发送和接收消息。
  • Web3:以太坊虚拟机
  • 【HarmonyOS】鸿蒙ArkWeb加载优化方案详解
  • 智慧城市SaaS平台|市政公用管理系统
  • 不可变类字段修复建议
  • 21. mysql redo 日志(下)
  • 模型选择与调优:从交叉验证到网格搜索的实践
  • 亚马逊广告进阶指南:如何优化流量实现新品快速起量
  • sqli-labs:Less-7关卡详细解析
  • NAT技术与代理服务
  • Jenkinsfile 报错
  • Elasticsearch服务器开发(第2版) - 读书笔记 第二章 索引
  • Docker常用命令速查手册:容器运维七维指南
  • Jupyter Notebook 中显示图片、音频、视频的方法汇总
  • arkui 动画曲线
  • react19更新哪些东西
  • vue3【组件封装】信息管理 S-comMangeInfo (含多条件搜索、分页表格、自带增删改查、重置密码等)
  • Java面试宝典:MySQL InnoDB引擎底层解析
  • VS调试前端项目时老是弹出Chrome无法更新的提示
  • 防抖(debounce)和节流(throttle)实现及原理讲解