天天看點

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

1.概述

  在大資料應用場景中,處理資料分析方面,由于開發者的水準不一樣,使用的程式設計語言也不盡相同,可能會涉及到R、Python、Java、Scala等,資料計算模型也估計不一樣,可能涉及的有Spark、Hive、Flink、Kylin等等。本篇部落格筆者給大家介紹的内容并不是告訴大家如何去使用。在《

Zeppelin使用心得

》中有介紹如何使用,這裡就不多做贅述了,今天主要是給大家剖析Zeppelin的源碼子產品。

2.内容

  目前Zeppelin官方已經釋出版本為0.7.3,源碼帶托管在Github上,大家可以先将Zeppelin的源碼在Github上下載下傳下來。Zeppelin的項目結構是以Maven的形式存在的,由多個Module構成,分為架構核心Module和其他Interpreter Module,源碼結構如下圖所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

  從截圖中可以看出,其實Zeppelin到目前為止,內建了很多插件,比如Beam、HBase、ES、Flink、Kylin、Pig等,這些都是平時大資料場景下常用的。

2.1 子產品分析

  Zeppelin的入口是ZeppelinServer(在zeppelin-server子產品下)這個類下的Main函數,通過Jetty内嵌伺服器提供WebSocket服務和Restful服務,還基于Shiro提供了權限認證和使用者校驗功能,都是使用Java程式設計語言實作的。在zeppelin-zengine子產品下,實作Notebook的持久化和檢索功能,同樣使用Java語言實作。在zeppelin-interpreter子產品下,通過調用zeppelin-zengine中的Thrift服務,來實作解釋器的互動功能。在zeppelin-web子產品下,用于腳本語言編寫以及資料的可視化,使用AngularJS前端架構實作。其他子產品詳見下表。

名稱 說明 實作語言
zeppelin-server 整個系統入口,提供伺服器功能、權限認證以及使用者校驗等功能 Java
zeppelin-zengine 實作Zeppelin中Notebook的持久化和檢索功能
zeppelin-interpreter 執行解釋器
zeppelin-web 業務腳本語言編寫、資料分析界面、資料可視化與結果導出 AngularJS
zeppelin-display 讓前端的AngularJS元素與背景資料進行綁定,進行資料互動 Scala
zeppelin-distribution 用于存放編譯後的二進制安裝包  
zeppelin-examples 示例代碼,用于測試
helium-dev 新特性,讓解釋器,存儲插件加入到Zeppelin中時,不需要重新開機Zeppelin服務

  Zeppelin項目運用了許多程式設計語言和架構,屬于一個混合項目。

3.源碼調試

  明白Zeppelin各個子產品的功能和作用後,我們可以嘗試去調試一下Zeppelin的源碼,這裡我們将Zeppelin的源碼導入到 IDEA 編輯器,然後找到ZeppelinServer啟動,如下圖所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

  然後選擇“Run 'ZeppelinServer.main()'”指令即可,等待服務啟動完成,啟動成功後,會在編輯器控制台列印日志,如下圖所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

  這裡,在啟動端口預設是8080,在ZeppelinConfiguration類下可以進行編輯,如下圖所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

  然後,我們可以到浏覽器預覽調試結果,如下圖所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

  一般在二次開發完成Zeppelin的功能後,我們會将源代碼重新編譯打包,可以使用Maven打包指令,如下所示:

mvn clean package -Pbuild-distr -Dcheckstyle.skip=true -DskipTests      

  打包完成後,會在zeppelin-distribution的target目錄下生成一個二進制的軟體安裝包。

4.關系圖

  這裡筆者給大家整理了Zeppelin-0.7.3的各個Module之間的關系圖,如下所示:

Zeppelin源碼1.概述2.内容3.源碼調試4.關系圖5.結束語

5.結束語

  這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉。

聯系方式:

郵箱:[email protected]

Twitter:

https://twitter.com/smartloli

QQ群(Hadoop - 交流社群1):

424769183

溫馨提示:請大家加群的時候寫上加群理由(姓名+公司/學校),友善管理者稽核,謝謝!

熱愛生活,享受程式設計,與君共勉!

作者:哥不是小蘿莉 [ 關于我 ][ 犒賞

出處: http://www.cnblogs.com/smartloli/

轉載請注明出處,謝謝合作!