Zeppelin on spark

原文:https://my.oschina.net/yjwxh/blog/620368

摘要: Zeppelin是一個web版的notebook, 用於做交互式數據分析以及可視化,背後可以接入不同的數據處理引擎,包括spark,hive,tajo等。原生支持scala, shell, markdown,shell等。 內置spark 引擎,也可以通過配置方式對接到自己部署的spark 集羣。

     目前zeppelin最新版本是0.5.6,http://zeppelin.incubator.apache.org/

      zepplin是 apache孵化器中的一個項目,但是由於其提供的簡單,易操作的web版交互式以及可視化分析工具,也較爲受歡迎。

     本文就先簡單介紹 zeppelin on spark的應用。

     下載、安裝zeppelin

     zeppelin的啓動   $ZEPPELIN_HOME/bin/zeppelin-dameon.sh start , 默認端口8080,啓動成功後即可在瀏覽器訪問:

     Zeppelin在構建的時候就默認將spark構建在了項目內部,因此在啓動zeppelin後,會自動注入SparkContext, SparkSQL實例。默認情況下zeppelin會以本地模式啓用其內部自帶的spark環境,如果你想使用自己部署的spark集羣,那麼就需要做一些簡單的配置:

  • 添加SPARK_HOME環境變量,在zeppelin安裝文件conf/zeppelin-env.sh文件中添加                      export SPARK_HOME=$spark_home_path
  • 在啓動起來的zeppelin web界面的interpreter菜單下,設置spark  master屬性。該屬性的設置規則是:
    • local[*] in local mode
    • spark://master:7077 in standalone cluster
    • yarn-client in Yarn client mode
    • mesos://host:5050 in Mesos cluster
    由於我使用的資源管理器是YARN ,所以我設置master屬性爲yarn-client:

        OK ,完成以上配置之後,就可以重新啓動zeppelin,並創建一個新的Notebook, 來測試spark,

        因爲zeppelin默認情況下是提供spark上下文環境,所以在編寫spark代碼的時候,不需要加%spark,

        首先通過一個 sc.version 來查看spark版本, 注意:默認情況下zeppelin啓動成功以後,並沒有將spark啓動,只有當有spark的操作請求的時候,纔會開始啓動,所以在第一次執行spark請求的時候會比較慢。

       

      如果執行結果顯示出了spark的版本信息,那麼就說明與spark後端執行引擎對接成功了。

      在此再額外補充一個可能出現的問題,因爲我在第一次嘗試的時候就出現了,當我執行sc.version的時候報異常:

com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'id' (in class org.apache.spark.rdd.RDDOperationScope)
      通過分析發現該異常的原因是:jackson包版本衝突。

       衝突原因:zeppelin 0.5.6使用的jackson版本是2.5.3 ,而spark1.6使用的jackson版本是2.4.4,所以導致json解析的時候異常。

       該問題的解決方法就是: 刪除zeppelin安裝文件下lib文件夾中jackson-*2.5.3.jar, 將jackson2.4.4版本的jar包複製到該文件夾下。進行替換。

      重啓zeppelin,該問題即可解決。

    

     zeppelin on spark環境已經配置完成,那麼接下來的工作就是 執行spark應用,然後使用zeppelin查看統計分析結果,當然目前用的比較方便的還是spark sql ,下面給出基於zeppelin on spark分析結果展示。


     

總結:  Zeppelin是一個比較讓人驚喜的發現,在發現他之前對於spark的分析結果,我們一般都是通過命令行的方式來查詢,如果要給用戶或者別人演示結果,那就更麻煩了,要不就將就的看看後端命令行結果,要不你就寫個簡單的web ui來進行結果展示。 這樣又會帶來一些問題,每次一個新的需求模型過來都要重新編程,每次一些小的參數變動都要修改代碼。帶來了極大的不方便。 但是自從有了zeppelin,這些問題都能夠很好的解決,並且不用再擔心數據分析結果的展示問題,也爲分析統計的測試帶來很大的方便。

當然Zeppelin目前還處於孵化器階段也有不足的地方,例如一些動態表單的支持還比較少,目前僅僅有文本框和下拉框。

關於Zeppelin更多的功能還在慢慢探索中:

(1) 各種Interpreter的測試,自定義Interpreter的接入方式

(2) zeppelin豐富的展示系統

(3) zeppelin的更多使用場景挖掘等等。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章