基于 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.pswp.cn/news/916886.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《消息队列学习指南:从 MQ 基础到 SpringAMQP 实践》

初识MQ 同步调用 目前我们采用的是基于OpenFeign的同步调用&#xff0c;也就是说业务执行流程是这样的&#xff1a; 支付服务需要先调用用户服务完成余额扣减 然后支付服务自己要更新支付流水单的状态 然后支付服务调用交易服务&#xff0c;更新业务订单状态为已支付 三个…

深度学习 --- 过拟合与欠拟合

深度学习 — 过拟合与欠拟合 文章目录深度学习 --- 过拟合与欠拟合一.概念1.1 过拟合1.2 欠拟合1.3 判断方式二&#xff0c;解决欠拟合三&#xff0c;解决过拟合3.1 L2正则化3.1.1 定义以及作用3.1.2 代码3.2 L1正则化3.3 L1与L2对比3.4 Dropout示例3.5 数据增强3.5.1 图片缩放…

Python 之抽象方法 @abstractmethod 的理解

如果你熟悉 Java 的话&#xff0c;Java 里有一个抽象接口的概念&#xff0c;Python 里的抽象方法基本上与其类似。在 Python 中&#xff0c;abstractmethod 是一个装饰器&#xff0c;用于定义抽象方法。它是实现抽象基类&#xff08;Abstract Base Class, ABC&#xff09;的核心…

深度学习·pytorch

广播机制 从末尾开始逐个维度遍历两个矩阵的shape&#xff0c;如果维度不相同&#xff0c;则考虑广播&#xff1a;任一方的维度为1或者维度不存在(小矩阵广播为大矩阵)&#xff0c;这样的运算可以广播 可以广播的例子 xtorch.empty(5,3,4,1) ytorch.empty(3,1,1) (x.add_(y)).s…

SpringBoot集成deepseek

pom文件&#xff1a;<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org…

JetBrains Annotations:从入门到落地,彻底告别 NullPointerException

本文基于三篇高质量博客&#xff08;JetBrains Annotations官方文档、Jakarta Validation 规范、《Effective Java》第3版&#xff09;的原文内容&#xff0c;结合作者在一线研发团队落地 JetBrains Annotations 的实战经验&#xff0c;系统梳理了该注解库的核心能力、使用姿势…

基于Rust与HDFS、YARN、Hue、ZooKeeper、MySQL

基于Rust与HDFS、YARN、Hue、ZooKeeper、MySQL集合 以下是基于Rust与HDFS、YARN、Hue、ZooKeeper、MySQL等技术栈结合的实例,涵盖不同场景和应用方向: 数据处理与分析 使用Rust编写MapReduce作业,通过YARN提交到HDFS处理大规模数据集。Rust的高性能特性适合处理密集型计算…

芯片上市公司正在放弃射频业务

转载自--钟林谈芯射频芯片赛道本来不卷的&#xff0c;投资人多了也就卷了。本周&#xff0c;多家媒体报道某芯片上市公司终止射频业务&#xff0c;终止射频业务的何止一家芯片上市公司&#xff0c;从去年开始就逐渐有上市公司终止射频业务&#xff0c;开启清货模式。如人饮水&a…

Jmeter 性能测试监控之ServerAgent

使用 Jmeter 对 Linux 服务器的进行压测时&#xff0c;想要监控服务器的 CPU 、内存&#xff0c;可以通过添加插件 【ServerAgent】来观察,可以实时监控性能指标 一、ServerAgent-2.2.3下载 下载地址&#xff1a; GitCode - 全球开发者的开源社区,开源代码托管平台 二、通过插…

5.苹果ios逆向-过ssl证书检测和安装ssh和获取root权限

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

Navicat 17 教程:Windows 和 Mac 系统适用

一、引言 对于程序员们来说&#xff0c;Navicat是一款极为实用的数据库管理工具。Navicat 17更是带来了诸多新特性&#xff0c;能大大提升我们的工作效率。今天就为大家带来Navicat 17在Windows和Mac系统上的使用教程。 二、准备工作 &#xff08;一&#xff09;下载安装包 「…

Android 中 实现柱状图自定义控件

一、基本思路 创建自定义控件的数据模型; 创建一个自定义 View 类,继承自 View; 在初始化方法中获取自定义属性的值。 创建设置数据方法,将数据模型列表转换成自定义绘制时的数据; 重写 onDraw 方法,以实现自定义的绘制逻辑。 二、主要绘制方法 1、drawLine 绘制直线 p…

Netty 核心原理与实战:从 DiscardServer 看透 Reactor 模式与组件协作

目录 Netty 是什么&#xff1f; Netty 的目标 Netty 实战案例 DiscardServer 服务端程序 NettyDiscardServer 业务处理器 NettyDiscardHandler 配置类 NettyDemoConfig 回顾 Reactor 模式中的 IO 事件处理流程 Netty 中的 Channel Netty 中的 Reactor Netty 中的 Han…

关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案

​ ✨重磅&#xff01;盹猫的个人小站正式上线啦&#xff5e;诚邀各位技术大佬前来探秘&#xff01;✨ 这里有&#xff1a; 硬核技术干货&#xff1a;编程技巧、开发经验、踩坑指南&#xff0c;带你解锁技术新姿势&#xff01;趣味开发日常&#xff1a;代码背后的脑洞故事、工具…

2025年6月电子学会青少年软件编程(C语言)等级考试试卷(三级)

答案和更多内容请查看网站&#xff1a;【试卷中心 -----> 电子学会 ----> C/C ---->三级】 网站链接 青少年软件编程历年真题模拟题实时更新 编程题 第 1 题 打印城门 题目描述 给定一个正整数 n&#xff0c;输出如下的星号城门。具体格式请见样例。 输入格…

跨平台直播美颜SDK开发指南:兼顾性能与美型效果的最佳实践

面对iOS、Android乃至Web等多端应用需求&#xff0c;如何开发一款真正跨平台、兼顾性能与美型效果的美颜SDK&#xff0c;成为众多开发团队和产品经理的一道必答题。 今天笔者这篇文章&#xff0c;就从架构设计、性能优化、视觉效果调校三个关键维度&#xff0c;带你深入解析跨平…

2025数字藏品安全保卫战:高防CDN如何成为NFT应用的“隐形护甲”?

副标题&#xff1a; 从DDoS防御到全球加速&#xff0c;拆解数字资产平台的生死防线&#x1f310; 引言&#xff1a;当数字藏品成为黑客的“头号靶场”2025年全球数字藏品市场突破$1000亿&#xff0c;但安全事件同步激增230%——某头部NFT平台因3.2Tbps DDoS攻击瘫痪&#xff0c…

linux 执行sh脚本,提示$‘\r‘: command not found

1、在Linux下执行某个脚本文件却提示$\r: command not found&#xff0c;如下图:2、错误原因:a、 Windows 风格的换行符&#xff1a;Windows 系统使用 \r\n 作为行结束符&#xff0c;而 Linux 和 Unix 系统使用 \n。当你从 Windows 环境中复制文本到 Linux 环境时&#xff0c;可…

使用HaiSnap做了一款取件码App(一键生成)

你是否怀揣着奇思妙想&#xff0c;却因不懂代码而对开发应用望而却步&#xff1f;现在&#xff0c;有一个神奇AI Agent&#xff08;响指HaiSnap&#xff09;&#xff0c;一个响指就能实现&#xff0c;你说神奇不&#xff1f;只需要一句话就可以生成你想要的应用&#xff01;让你…

容器与虚拟机的本质差异:从资源隔离到网络存储机制

目录 专栏介绍 作者与平台 您将学到什么&#xff1f; 学习特色 容器与虚拟机的本质差异&#xff1a;从资源隔离到网络存储机制 一、容器与虚拟机的本质区别 1.1 资源抽象层次差异 1.2 资源消耗与性能对比 1.3 隔离性深度差异 二、容器网络基础架构 2.1 Docker网络模型…