基于 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
英文地址,請注明出處:http://en.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網絡模型…