大數(shù)據(jù)分析工程師入門(mén)11-Hue&Zeppelin
日常數(shù)據(jù)分析工作中,很多時(shí)候都在處理臨時(shí)性的需求,這種需求要求快速響應(yīng)和很快得出結(jié)果,如果每一個(gè)需求都需要寫(xiě)在代碼文件中,然后編譯打包上傳再執(zhí)行,就會(huì)非常浪費(fèi)時(shí)間,尤其是寫(xiě)出來(lái)的查詢語(yǔ)句頻繁出錯(cuò),需要不斷改正再重復(fù)打包上傳的時(shí)候。
所以繼上一篇Linux常用命令工具篇講解完成以后,本文講解另外兩個(gè)非常重要的數(shù)據(jù)分析工作中會(huì)使用到的工具:Hue和Zeppelin。
它們都提供了非常方便的數(shù)據(jù)查詢UI界面,能夠很方便的進(jìn)行多次查詢并且能夠很快地查詢出結(jié)果。
那么,為什么要將兩種工具都跟大家介紹一下呢?
那是因?yàn)樗鼈兌加兄鴮儆谧约旱奶匦院蛢?yōu)勢(shì),小伙伴們需要根據(jù)不同使用場(chǎng)景擇優(yōu)選擇??紤]到有的小伙伴對(duì)這兩種工具目前還沒(méi)有很豐富的使用經(jīng)驗(yàn),在本文開(kāi)頭不對(duì)它們的異同之處介紹說(shuō)明,待大家閱讀完本文正文,在文章的最后跟大家一起來(lái)總結(jié)對(duì)比一下它們的差別,這樣大家理解起來(lái)會(huì)更容易一些。
01
Hue
為什么要講Hue?
Hue是一個(gè)Web應(yīng)用,設(shè)計(jì)初衷是簡(jiǎn)化用戶和Hadoop集群間的交互。
大數(shù)據(jù)的框架很多,通常在解決一個(gè)問(wèn)題的時(shí)候,會(huì)用到多種框架,這個(gè)時(shí)候有一個(gè)統(tǒng)一的web UI界面去管理各個(gè)大數(shù)據(jù)常用框架是非常方便的。Hue幾乎可以支持所有大數(shù)據(jù)框架,包含有HDFS文件系統(tǒng)的頁(yè)面(調(diào)用HDFSAPI,進(jìn)行增刪改查的操作),有HIVE UI界面(使用HiveServer2,JDBC方式連接,可以在頁(yè)面上編寫(xiě)HiveQL語(yǔ)句,進(jìn)行數(shù)據(jù)分析查詢),YARN監(jiān)控及Oozie工作流任務(wù)調(diào)度頁(yè)面等等。
Hue通過(guò)把這些大數(shù)據(jù)技術(shù)棧整合在一起,通過(guò)統(tǒng)一的Web UI來(lái)訪問(wèn)和管理,極大地提高了大數(shù)據(jù)用戶和管理員的工作效率。
日常數(shù)據(jù)分析工作中,Hue幾乎每天都會(huì)用到,所以需要熟練掌握Hue的常用功能。
主要講解目標(biāo)
圍繞日常數(shù)據(jù)分析工作中使用HiveQL在Hue上查詢數(shù)據(jù)用到的功能點(diǎn),寫(xiě)一篇類(lèi)似使用手冊(cè)的Hue工具操作指南。
主要講解思路
簡(jiǎn)單來(lái)說(shuō),就以一個(gè)用戶第一次進(jìn)入Hue來(lái)進(jìn)行一個(gè)簡(jiǎn)單的HiveQL查詢?yōu)槔?,逐步講解日常最常使用到的功能點(diǎn)。
1.1首先進(jìn)入的主界面功能模塊簡(jiǎn)介
通過(guò)已經(jīng)開(kāi)通了權(quán)限的用戶名密碼登陸Hue,首先進(jìn)入的主界面如下:
如圖展示的三塊紅框功能區(qū),功能區(qū)1后續(xù)會(huì)在實(shí)際使用中結(jié)合使用場(chǎng)景介紹,功能區(qū)2和3說(shuō)明如下:
功能區(qū)2從左到右依次是搜索文件夾或Notebook、新建Hive Query或Notebook、新建文件夾、重命名文件夾、將選中的文件夾或者Notebook移到回收站、將選中文件夾或Notebook分享給其他用戶或用戶組、下載選中的文件夾或Notebook(下載下來(lái)是個(gè)json文件)、上傳文件(要求是指定格式的json文件)、進(jìn)入回收站。功能區(qū)3羅列了目前該用戶權(quán)限下看到的所有文件夾和Notebook,可以點(diǎn)擊進(jìn)入目標(biāo)文件夾或Notebook頁(yè)面。
主界面簡(jiǎn)單介紹完以后,下一步就是如何進(jìn)入庫(kù)表查看和HiveQL編輯界面了,入口在功能區(qū)1,共有兩種進(jìn)入方式。
第一種:點(diǎn)擊Query Editors出現(xiàn)下拉框
點(diǎn)擊Hive,進(jìn)入頁(yè)面如下
第二種:點(diǎn)擊Notebooks
新建一個(gè)Notebook(紅框1)或者進(jìn)入自己已建的Notebook(紅框2),如選擇新建Notebook,進(jìn)入頁(yè)面如下:
標(biāo)記1處是給該Notebook命名,標(biāo)記2是該Notebook的詳細(xì)說(shuō)明,標(biāo)記3處可選擇某種語(yǔ)言進(jìn)入代碼編輯頁(yè)面,如選擇Hive編寫(xiě)HiveQL。
這兩種方式的區(qū)別是:
后者建Notebook可以將一次完整需求的所有查詢語(yǔ)句歸整保存,便于復(fù)用。下次只要在上文所講的主界面通過(guò)搜索該Notebook或上文所講能夠進(jìn)入HiveQL編輯界面的第二個(gè)入口處,點(diǎn)擊菜單欄Notebooks彈出下拉框后,下滑滾動(dòng)找到該Notebook,點(diǎn)擊進(jìn)入,就可以再次查看這次所寫(xiě)的查詢語(yǔ)句,進(jìn)行復(fù)用或回顧,并且可以將該Notebook分享給他人使用。
在數(shù)據(jù)分析日常工作中,有時(shí)候需要提供給業(yè)務(wù)方某個(gè)需求的多個(gè)查詢語(yǔ)句,以供他們需要時(shí)使用,這時(shí)候就可以建一個(gè)Notebook,幫業(yè)務(wù)方把查詢語(yǔ)句依次寫(xiě)好保存,然后將Notebook分享給業(yè)務(wù)方即可。HiveQL編輯界面中點(diǎn)擊上圖中的+號(hào)可以依次添加新的查詢編輯區(qū),且新添加的查詢編輯區(qū)可重新選擇執(zhí)行語(yǔ)言。
1.2查看目標(biāo)庫(kù)表的基本信息
通過(guò)上面的講解,現(xiàn)在我們已經(jīng)可以著手進(jìn)行數(shù)據(jù)查詢了,首先進(jìn)入上文所建的Notebook(文章輸出示例Notebook)。
1.2.1 搜索目標(biāo)表
假設(shè)現(xiàn)在需要統(tǒng)計(jì)的信息在test庫(kù)中,且只記得表名包含active字段,直接搜索關(guān)鍵字即可,搜索支持模糊匹配。
1.2.2 查看字段信息
如果想要知道目標(biāo)表中有哪些字段,每個(gè)字段的含義和數(shù)據(jù)類(lèi)型是什么,只需點(diǎn)擊一下查找到的目標(biāo)表就可以看到字段名和字段類(lèi)型,將鼠標(biāo)懸停在想要查看的字段上,就可以看到字段注釋。
1.2.3 查看樣本值
如果想要知道表里面的字段值大概是什么樣子的,有兩種方式,第一種可以寫(xiě)HiveQL limit 幾條出來(lái)看看結(jié)果。
另一種可以不用寫(xiě)查詢語(yǔ)句那么麻煩,通過(guò)點(diǎn)擊上圖目標(biāo)表或者每個(gè)字段右側(cè)的像柱狀圖一樣的那個(gè)圖標(biāo),就會(huì)彈出樣本值浮框。
1.2.4 查看分區(qū)字段
之前系列課程Hive基礎(chǔ)中有提到過(guò),進(jìn)行表數(shù)據(jù)查詢時(shí),尤其是一張數(shù)據(jù)量非常龐大的表的時(shí)候,一定要記得加上分區(qū)字段進(jìn)行條件限制,否則極可能因查詢數(shù)據(jù)量過(guò)大而造成集群崩潰。想要查看目標(biāo)表的分區(qū)字段是哪些,方式有兩種,除了通過(guò)show create table 語(yǔ)句查看,還有一種方式如下,點(diǎn)擊DataBrowsers 下的Metastore Tables:
進(jìn)入test庫(kù)的詳情頁(yè),如下:
點(diǎn)擊目標(biāo)表紅框處的向右箭頭,進(jìn)入該表的詳情頁(yè),該頁(yè)面可以看到表的基本信息、表的字段信息、分區(qū)信息、樣本數(shù)據(jù)等。
點(diǎn)擊標(biāo)記1處,查看分區(qū)字段信息如下:
點(diǎn)擊標(biāo)記2處,可查看目前的分區(qū)字段信息(比如日期信息)所有值的情況(至于頁(yè)面上其他功能按鈕,小伙伴們可以自己實(shí)踐操作查看了解一下)。
點(diǎn)擊標(biāo)記1處可刪除所選中分區(qū),點(diǎn)擊標(biāo)記2處可跳轉(zhuǎn)到HDFS查看具體HDFS路徑。
1.3標(biāo)題編寫(xiě)HiveQL
字段、字段值、分區(qū)都明確了以后,可以寫(xiě)第一個(gè)HiveQL了,以需要查詢某段時(shí)間目標(biāo)表中每天所有明細(xì)數(shù)據(jù)為例。
1.3.1 傳參
如果這個(gè)需求需要不定時(shí)查詢,那么day_p的時(shí)間區(qū)間可以采用參數(shù)的方式傳入,使用者只需要在傳參輸入框輸入想要查詢的日期即可,start_time和end_time字段可依據(jù)實(shí)際需要命名為別的名稱(chēng)。要點(diǎn)是,在SQL中使用類(lèi)似${argName}的形式,下面就會(huì)多一個(gè)輸入框。
1.3.2 切換語(yǔ)言環(huán)境
目前編輯框的語(yǔ)言環(huán)境是HiveQL,如何想用SparkSql或者執(zhí)行別的語(yǔ)言,可進(jìn)行切換,切換語(yǔ)言環(huán)境的同時(shí)也會(huì)切換執(zhí)行引擎。操作見(jiàn)下圖,點(diǎn)擊標(biāo)記處就可以進(jìn)行選擇啦:
1.3.3 語(yǔ)句格式化&執(zhí)行
如果所編寫(xiě)的HiveQL包含了很多層關(guān)聯(lián)或嵌套,整個(gè)語(yǔ)句結(jié)構(gòu)不清晰,查看起來(lái)很不方便,那么可以使用Hue的Format功能,使整個(gè)語(yǔ)句的結(jié)構(gòu)進(jìn)行標(biāo)準(zhǔn)格式化。點(diǎn)擊下圖標(biāo)記2處,下拉框中選擇Format,即可將語(yǔ)句結(jié)構(gòu)格式化。
標(biāo)記1處是語(yǔ)句執(zhí)行按鈕,點(diǎn)擊即開(kāi)始執(zhí)行。如果查詢數(shù)據(jù)量非常大,已經(jīng)查詢了很長(zhǎng)一段時(shí)間或者突然發(fā)現(xiàn)查詢語(yǔ)句有問(wèn)題,想要終止查詢,那么同樣可點(diǎn)擊標(biāo)記1處進(jìn)行終止。
Format下方還有一個(gè)Clear選項(xiàng),該選項(xiàng)可以將當(dāng)前編輯框中的查詢語(yǔ)句和查詢結(jié)果清空。
1.3.4 查看查詢結(jié)果
接下來(lái)將教大家在查詢結(jié)果數(shù)據(jù)字段非常多的情況下如何選擇性的篩選查看部分?jǐn)?shù)據(jù)。
1.3.4.1 查看所有結(jié)果字段及其類(lèi)型
點(diǎn)擊下圖標(biāo)記處。
彈出如下標(biāo)記處的查詢結(jié)果字段值和字段類(lèi)型信息。
1.3.4.2 搜索查詢結(jié)果指定字段
查詢出來(lái)的結(jié)果字段非常多的情況下,可使用搜索功能,如查找all_user字段。
1.3.4.3 選擇顯示部分查詢結(jié)果字段
如果只想顯示部分字段查看其結(jié)果值,可針對(duì)復(fù)選框進(jìn)行選擇性勾選。
1.3.5 查詢結(jié)果可視化
Hue上可對(duì)查詢結(jié)果進(jìn)行簡(jiǎn)單的可視化,點(diǎn)擊下圖標(biāo)記處彈出的下拉選項(xiàng)中可選擇性的進(jìn)行不同類(lèi)型可視化,讀者可自行實(shí)踐操作下,這里就不一一操作展示效果啦。
1.3.6 查詢結(jié)果下載
通常情況下,在Hue上直接進(jìn)行可視化操作不會(huì)太多,一般會(huì)將整個(gè)查詢結(jié)果下載下來(lái)在Excel里進(jìn)行結(jié)果的初步分析和查看工作。下載按鈕如下圖標(biāo)記處,下拉框中提供不同的下載選項(xiàng)。需要注意的是,如果查詢的是數(shù)據(jù)量非常龐大的明細(xì)數(shù)據(jù),很可能出現(xiàn)結(jié)果不能完全下載下來(lái)的情況,因此建議結(jié)果數(shù)據(jù)超過(guò)1000條時(shí),優(yōu)先下載csv格式。
1.3.7 命名查詢主題
可以給每一條查詢語(yǔ)句命名,以便提高辨識(shí)度,方便日后查閱。
如命名以上查詢語(yǔ)句為“查詢一段時(shí)間內(nèi)的明細(xì)數(shù)據(jù)”,記住命名完成以后,點(diǎn)擊下圖標(biāo)記1處的保存按鈕進(jìn)行保存,最好養(yǎng)成時(shí)時(shí)保存的習(xí)慣,以免意外情況發(fā)生導(dǎo)致頁(yè)面重新刷新,所有操作信息丟失,又得重新開(kāi)始的情況。
1.3.8 清空Notebook里的所有查詢結(jié)果
整個(gè)Notebook頁(yè)面查詢結(jié)果展示過(guò)多的話,有可能出現(xiàn)每次進(jìn)入該Notebook頁(yè)面需要刷新很久的情況,如無(wú)必要,可將所有查詢結(jié)果清空。
1.3.10 其他
Hue還有很多其他功能點(diǎn),感興趣的小伙伴可基于本文所介紹之基礎(chǔ)自行查看了解,作為入門(mén)課程,這里就不繼續(xù)深入介紹了,比如HDFS相關(guān)信息查看頁(yè)面(通過(guò)標(biāo)記1處進(jìn)入)和Job信息查看頁(yè)面(通過(guò)標(biāo)記2處進(jìn)入)等。
02
Zeppelin
2.1zeppelin簡(jiǎn)介
zeppelin是一個(gè)非常流行的開(kāi)源數(shù)據(jù)探索分析平臺(tái)。zeppelin集成了非常多的數(shù)據(jù)處理和分析相關(guān)的組件,其核心組織概念是notebook,所有的操作都可以在notebook中完成,官網(wǎng)的原話是“The Notebook is the place for all yourneeds”。
它主要擁有以下優(yōu)秀的功能特性:
1)非常易用的操作界面,界面上提供了非常好用的各式工具,幫助你完成各種數(shù)據(jù)處理操作。
2)支持多種編程語(yǔ)言,zeppelin通過(guò)interpreter實(shí)現(xiàn)了將多種語(yǔ)言和數(shù)據(jù)處理框架以插件的形式集成進(jìn)來(lái)。官方默認(rèn)集成了spark組件,幾乎是開(kāi)箱即用的,非常方便。
3)有著強(qiáng)大的數(shù)據(jù)可視化組件,除了支持基礎(chǔ)圖形(折線圖、柱狀圖、餅圖等)外,zeppelin還支持?jǐn)?shù)據(jù)透視功能,而且是通過(guò)拖拽就可以完成可視化操作,非常強(qiáng)大。
4)支持動(dòng)態(tài)表單,允許在你的SQL語(yǔ)句或者代碼中嵌入變量,在執(zhí)行前輸入不同的參數(shù)值給變量賦值。
5)支持將zeppelin頁(yè)面或段落嵌入到其他網(wǎng)頁(yè)中,并能夠?qū)崟r(shí)更新數(shù)據(jù)。
那么對(duì)于大數(shù)據(jù)分析師來(lái)說(shuō),zeppelin能夠幫我們做什么呢?
首先,zeppelin支持運(yùn)行sparksql,我們可以在zeppelin上運(yùn)行我們編寫(xiě)的SQL語(yǔ)句,通過(guò)比對(duì)運(yùn)行后的結(jié)果,驗(yàn)證我們的SQL是否編寫(xiě)正確;
其次,zeppelin支持運(yùn)行scala代碼,那我們可以利用它來(lái)試探性地使用spark的相關(guān)api,或者在zeppelin上編寫(xiě)并運(yùn)行spark的udf,避免反復(fù)打包上傳,提高開(kāi)發(fā)效率;
然后,zeppelin擁有非常強(qiáng)大的可視化功能,我們可以對(duì)數(shù)據(jù)進(jìn)行探索分析,通過(guò)可視化直觀地發(fā)現(xiàn)問(wèn)題,快速驗(yàn)證構(gòu)想,并深入地分析和挖掘數(shù)據(jù)價(jià)值。
最后,zeppelin的運(yùn)行結(jié)果可以非常方便的導(dǎo)出,可以使用它來(lái)完成臨時(shí)需求,提供數(shù)據(jù)結(jié)果給業(yè)務(wù)方。并且可以把相關(guān)代碼或SQL保存起來(lái),下次如有相似需求,直接修改下相關(guān)條件運(yùn)行下就可以了。
官網(wǎng)上有非常詳細(xì)的zeppelin安裝步驟,大家可以依照文檔來(lái)完成安裝和配置,這里就不占用篇幅來(lái)講了。在大致了解了zeppelin之后,我們來(lái)看下它的核心概念和具體的使用方法。
2.1zeppelin簡(jiǎn)介
2.2.1 Interpreter
Interpreter是zeppelin最核心的概念,zeppelin允許任何語(yǔ)言和數(shù)據(jù)處理框架以interpreter的方式集成進(jìn)來(lái),這構(gòu)建了zeppelin強(qiáng)大功能的基礎(chǔ)。
zeppelin提供了大量的各種語(yǔ)言和框架的可以直接使用的interpreter,在安裝zeppelin時(shí)可以選擇安裝包含所有interpreter的安裝包,或者在安裝后通過(guò)
./bin/install-interpreter.sh腳本安裝指定名稱(chēng)的interpreter。另外,你也可以參照官網(wǎng)上的文檔,編寫(xiě)自己的interpreter,擴(kuò)展zeppelin的功能。
在使用interpreter之前需要進(jìn)行一些設(shè)定,如對(duì)于spark interpreter來(lái)說(shuō),需要設(shè)置spark的安裝目錄、提交作業(yè)的地址、driver和excutor的內(nèi)存等信息。具體如何設(shè)置,在官網(wǎng)文檔中都有給出詳細(xì)說(shuō)明。
在使用具體的interpreter時(shí),只需要在代碼的首行添加%加上具體的interpreter名稱(chēng)即可(首行不能有其他內(nèi)容)。如使用spark時(shí),在首行添加%spark,使用sparksql時(shí),在首行添加%sql即可,使用pyspark,在首行添加%pyspark。如果設(shè)置了默認(rèn)使用spark,則可以省略不寫(xiě)。
2.2.2 Note&Paragraph
Note頁(yè)面是zeppelin使用頻率最高的頁(yè)面,這個(gè)頁(yè)面是用戶的主要操作界面,它有非常多的功能,我們?cè)谙乱徽鹿?jié)頁(yè)面介紹時(shí)會(huì)詳細(xì)介紹。note頁(yè)面包含多個(gè)paragraph,每個(gè)paragraph內(nèi)可以寫(xiě)代碼。上面我們提到的interpreter標(biāo)識(shí)就是寫(xiě)在paragraph的首行的,每個(gè)paragraph內(nèi)只能使用一種interpreter,但是不同的paragraph可以使用不同的interpreter,即一個(gè)note內(nèi)可以同時(shí)存在多個(gè)使用不同interpreter的paragraph。
zeppelin是以paragraph為最小運(yùn)行單位的。對(duì)于spark interpreter來(lái)說(shuō),同一個(gè)用戶同一時(shí)間,只能有一個(gè)paragraph處于運(yùn)行狀態(tài)(running),如果這時(shí)運(yùn)行了其他的寫(xiě)了spark代碼的paragraph,那么它將處于等待狀態(tài)(pending),直到第一個(gè)paragraph運(yùn)行結(jié)束后,它才會(huì)開(kāi)始運(yùn)行。當(dāng)然,運(yùn)行狀態(tài)是可以被中斷的。
2.2.3 Dynamic forms
動(dòng)態(tài)表單(dynamic form)是zeppelin提供的一項(xiàng)非常實(shí)用的功能,允許你在代碼或者SQL中使用變量,在運(yùn)行前通過(guò)手動(dòng)輸入變量值,然后運(yùn)行時(shí)動(dòng)態(tài)替換代碼或者SQL中的變量,避免了反復(fù)修改代碼或SQL的麻煩。具體示例如下:
如果只有圖中條件的值發(fā)生變化時(shí),只需要在下方的輸入框中輸入新的值,直接運(yùn)行就可以了,非常的方便。只要你在代碼或SQL中使用類(lèi)似${argName}的形式,那么就會(huì)被識(shí)別為動(dòng)態(tài)表單,如果下方?jīng)]有出現(xiàn)輸入框,可以先運(yùn)行一下,輸入框就會(huì)出現(xiàn)了。
動(dòng)態(tài)表單還有其他一些用法,更多詳細(xì)信息可以查閱官方文檔(https://zeppelin.apache.org/docs/0.8.1/usage/dynamic_form/intro.html)。
2.3zeppelin頁(yè)面介紹
zeppelin的功能是很強(qiáng)大的,因此頁(yè)面也比較多,這里我們只介紹最常用的幾個(gè)頁(yè)面。
2.3.1 主頁(yè)
頂部導(dǎo)航欄上標(biāo)記1的位置,點(diǎn)擊后會(huì)展開(kāi)現(xiàn)有note的列表,與標(biāo)記5區(qū)域展示的內(nèi)容一致,主要作用是為了方便你處在某個(gè)note頁(yè)面中時(shí),可以不用回到首頁(yè)而方便地切換到其他note。
點(diǎn)擊標(biāo)記2的位置,會(huì)跳轉(zhuǎn)到j(luò)ob頁(yè)面,這個(gè)頁(yè)面你可以查看note各paragraph的最后一次運(yùn)行狀態(tài),并可通過(guò)點(diǎn)擊圖標(biāo)跳轉(zhuǎn)到指定的note中的paragraph位置,我們通??梢岳眠@個(gè)頁(yè)面查看定時(shí)調(diào)度任務(wù)的執(zhí)行狀態(tài)。
標(biāo)記3位置展示的是與ZeppelinServer的連接狀態(tài),綠色表示正常,當(dāng)連接出現(xiàn)異常時(shí),這里會(huì)變成紅色。點(diǎn)擊標(biāo)記4的位置,可以跳轉(zhuǎn)到interpreter的配置頁(yè)面,我們?cè)?.3.4小節(jié)會(huì)再詳細(xì)講。
點(diǎn)擊標(biāo)記6位置的按鈕可以創(chuàng)建一個(gè)全新的note,這個(gè)按鈕在上述提到的標(biāo)記1展開(kāi)的列表中也有。當(dāng)你把鼠標(biāo)懸停在標(biāo)記5區(qū)域的某個(gè)note名字上時(shí),后面會(huì)出現(xiàn)三個(gè)小按鈕,如標(biāo)記7位置所示,分別對(duì)應(yīng)重命名、清空輸出和移到回收站操作。
在標(biāo)記3的左邊有個(gè)搜索框,這里可以進(jìn)行全局搜索,例如你只記得代碼中的某個(gè)片段,但是不記得具體寫(xiě)在哪個(gè)note中,就可以通過(guò)這里搜索出對(duì)應(yīng)的note,點(diǎn)擊note的名稱(chēng)便可以直接跳轉(zhuǎn)進(jìn)去。如下所示:
2.3.2 note頁(yè)
頂部導(dǎo)航欄和首頁(yè)的導(dǎo)航欄作用完全相同,這里就不再重復(fù)講了。標(biāo)記1的位置展示的是note的名字,建議大家要起一個(gè)辨識(shí)度比較高的名字,不要太隨意,不然后續(xù)查找代碼時(shí)非常費(fèi)勁。標(biāo)記1右側(cè)為工具欄,我們來(lái)逐個(gè)介紹下。標(biāo)記2區(qū)域中的按鈕是針對(duì)所有paragraph生效的,從左至右依次為,運(yùn)行所有paragraph、顯示或隱藏代碼、顯示或隱藏輸出結(jié)果、清空所有輸出結(jié)果、克隆當(dāng)前note頁(yè)、導(dǎo)出當(dāng)前note頁(yè)、切換為私有模式。標(biāo)記3區(qū)域提供了版本控制功能。標(biāo)記4區(qū)域內(nèi)按鈕,分別是將當(dāng)前note移動(dòng)到回收站和對(duì)當(dāng)前note做定時(shí)調(diào)度。標(biāo)記5區(qū)域的功能依次為,展示快捷鍵、interpreter綁定、note權(quán)限管理和主題模式選擇。
這里我們簡(jiǎn)單講下interpreter綁定界面,點(diǎn)擊下圖中箭頭位置可以打開(kāi)綁定界面。界面中展示的是所有你安裝的interpreter組,藍(lán)色表示在本note中可以使用,點(diǎn)擊藍(lán)色方框后會(huì)變成白色,表示和當(dāng)前note解綁,在當(dāng)前note中不可使用。另外,可以通過(guò)拖拽改變他們的順序,處于最頂上的那個(gè)方框里的第一個(gè)解釋器就是默認(rèn)解釋器,當(dāng)你在paragraph中不指定解釋器時(shí),就會(huì)使用這個(gè)默認(rèn)解釋器。點(diǎn)擊方框前面的刷新按鈕,會(huì)重啟對(duì)應(yīng)的interpreter。
在note頁(yè)面的下方所有區(qū)域?yàn)閜aragraph區(qū),我們?cè)谙乱恍」?jié)單獨(dú)來(lái)講下。
2.3.3 paragraph
標(biāo)記1區(qū)域?yàn)榇a編輯區(qū),你在paragraph的代碼編輯區(qū)中的所有編輯操作都是自動(dòng)保存的,而且zeppelin還提供了針對(duì)不同語(yǔ)言的語(yǔ)法高亮,非常的好用。標(biāo)記2為命令區(qū),從左只有依次為運(yùn)行按鈕、隱藏編輯區(qū)、隱藏輸出、設(shè)置。點(diǎn)擊運(yùn)行按鈕后,編輯區(qū)的代碼會(huì)被運(yùn)行,在運(yùn)行結(jié)束前,如果再點(diǎn)擊一次,則會(huì)中止代碼的運(yùn)行。點(diǎn)擊設(shè)置按鈕后會(huì)彈出下面展示的設(shè)置選項(xiàng)界面,這里重點(diǎn)關(guān)注下標(biāo)記4選項(xiàng),可以展示title,這樣我們就可以給我們的每個(gè)paragraph起一個(gè)名字或?qū)懸痪涿枋?,提高辨識(shí)度。標(biāo)記5的區(qū)域展示的是上次運(yùn)行花費(fèi)的時(shí)間,以及代碼的最后更新時(shí)間等信息。
標(biāo)記3的區(qū)域?yàn)榻Y(jié)果展示區(qū),在紅框上面的一排按鈕為可視化操作相關(guān)的按鈕,大家可以嘗試地去用一下,用zeppelin可以完成常用基本圖形的可視化。如果你的代碼有報(bào)錯(cuò),錯(cuò)誤信息也會(huì)在這個(gè)區(qū)域展示。
paragraph是我們工作的核心區(qū)域,它的功能簡(jiǎn)潔而強(qiáng)大,新增paragraph也是非常方便的,你可以點(diǎn)擊任意paragraph的頂部或底部間隙來(lái)插入一個(gè)新的paragraph,如下圖所示:
標(biāo)記6位置即新增一個(gè)paragraph的按鈕,默認(rèn)是隱藏的,鼠標(biāo)懸停在這里就會(huì)顯示。標(biāo)記7位置演示了展示錯(cuò)誤信息的功能。
2.3.4 interpreter頁(yè)
通過(guò)2.3.1小節(jié)中講到的點(diǎn)擊標(biāo)記4的位置,可以跳轉(zhuǎn)到interpreter頁(yè),當(dāng)然啦,前提是你有這個(gè)頁(yè)面的訪問(wèn)權(quán)限,具體頁(yè)面的形式如下所示。
標(biāo)記1區(qū)域?yàn)楣δ馨粹o,從左到右依次為跳到SparkUI界面、編輯spark interpreter的相關(guān)屬性、重啟spark interpreter(該動(dòng)作同時(shí)會(huì)重啟Spark client端,即SparkSubmit進(jìn)程)、移除spark interpreter。標(biāo)記2區(qū)域?yàn)樵O(shè)置spark interpreter實(shí)例化SparkSubmit進(jìn)程的方式,圖中設(shè)置結(jié)果的含義為每個(gè)用戶都擁有獨(dú)立的SparkSubmit進(jìn)程,他們是互相隔離的。標(biāo)記3區(qū)域的作用為設(shè)置spark的相關(guān)屬性,如master地址、driver和executor內(nèi)存等,修改設(shè)置后需要重啟spark interpreter才能生效。
03
Hue&Zeppelin異同點(diǎn)
通過(guò)正文對(duì)Hue和Zeppelin的使用說(shuō)明,相信大家對(duì)它們已經(jīng)有了一定的了解,如開(kāi)篇跟大家說(shuō)的,它們都是很好的能夠快速響應(yīng)臨時(shí)需求和很快得到查詢結(jié)果的Web UI工具。
那么,它們有什么異同點(diǎn)呢?分以下幾個(gè)方面跟大家總結(jié)一下。
1功能
(1)Zeppelin和Hue都能提供一定的數(shù)據(jù)查詢和可視化的功能,都提供了多種圖形化數(shù)據(jù)表示形式。
(2)Zeppelin支持的后端數(shù)據(jù)查詢程序較多。
(3)Zeppelin只提供了單一的數(shù)據(jù)處理功能,包括上文提到的數(shù)據(jù)提取、數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)分析、數(shù)據(jù)可視化等都屬于數(shù)據(jù)處理的范疇。而Hue的功能相對(duì)豐富的多,除了類(lèi)似的數(shù)據(jù)處理,還有元數(shù)據(jù)管理、Oozie工作流管理、作業(yè)管理、用戶管理、Sqoop集成等很多管理功能。從這點(diǎn)看,Zeppelin只是一個(gè)數(shù)據(jù)處理工具,而Hue更像是一個(gè)綜合管理工具。
2架構(gòu)
(1)Zeppelin采用插件式的解釋器,通過(guò)插件開(kāi)發(fā),可以添加任何后端語(yǔ)言和數(shù)據(jù)處理程序。相對(duì)來(lái)說(shuō)更獨(dú)立和開(kāi)放。
(2)Hue與Hadoop生態(tài)圈的其它組件密切相關(guān),一般都與CDH(Cloudera發(fā)行版(Cloudera’s DistributionIncluding Apache Hadoop,簡(jiǎn)稱(chēng) CDH ))一同部署。
3使用場(chǎng)景
(1)Zeppelin適合單一數(shù)據(jù)處理、但后端處理語(yǔ)言繁多的場(chǎng)景,尤其適合Spark。
(2)Hue適合與Hadoop集群的多個(gè)組件交互、如Oozie工作流、Sqoop等聯(lián)合處理數(shù)據(jù)的場(chǎng)景,尤其適合與Impala協(xié)同工作。
小結(jié)
本文主要給大家介紹了兩種日常數(shù)據(jù)分析工作中用來(lái)快速處理臨時(shí)需求的Web UI工具-Hue&Zeppelin。