天天看點

【公共雲支援】MaxCompute Spark支援互動式Zeppelin

由于安全原因,使用者無法觸達生産叢集的網絡,是以MaxCompute Spark一直沒有放開

yarn-client

的支援,也就是

Spark-Shell

Spark-SQL

以及

PYSPARK

等互動式功能一直無法支援。最近調研了Zeppelin架構,配合MaxCompute Spark的相關特性以及元件,開發支援了Zeppelin on MaxCompute Spark來支援相對應的互動式探索需求。

步驟說明

  • 因為配置以及啟動比較繁瑣,使用者未必會對這方面的事情感興趣,是以我封裝了一個一鍵啟動的腳本,見 spark-zeppelin-public.sh
  • 下載下傳腳本到本地後,運作

    sh spark-zeppelin-public.sh

    後,會自動下載下傳相關元件如下
    • spark-zeppelin-public.conf
    • spark-zeppelin-public.jar
    • spark-2.3.0-odps0.32.0.tar.gz
  • 第一次運作腳本會出現以下錯誤,這是因為預設的

    spark-zeppelin-public.conf

    并沒有配置accessId,accessKey,projectName
linxuewei:spark-zeppelin-public linxuewei$ sh spark-zeppelin-public.sh 
working dir: /Users/linxuewei/Desktop/spark-zeppelin-public
download spark-zeppelin-public.conf
download spark-zeppelin-public.jar
download spark-2.3.0-odps0.32.0.tar.gz
extract spark-2.3.0-odps0.32.0.tar.gz
export SPARK_HOME
spark-zeppelin-public.conf checking
TBD count is        3, plz check config make sure id key project is written!
config check failed, plz set id key project in spark-zeppelin-public.conf           
  • 正常配置

    spark-zeppelin-public.conf

    之後再運作

    sh spark-zeppelin-public.sh

linxuewei:spark-zeppelin-public linxuewei$ sh spark-zeppelin-public.sh 
working dir: /Users/linxuewei/Desktop/spark-zeppelin-public
export SPARK_HOME
spark-zeppelin-public.conf checking
config check passed, start spark-submit

就會啟動一個MaxCompute Spark作業,等待作業執行結束之後,可以回溯日志,找到logview

http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=zky_test&i=20190710044052214gy6kc292&token=eXN6eFlsNmQzOFV4dUIzVEVndm9KQUtVSlVNPSxPRFBTX09CTzpwNF8yNDcwNjM5MjQ1NDg0NDc5NzksMTU2Mjk5Mjg1Mix7IlN0YXRlbWVudCI6W3siQWN0aW9uIjpbIm9kcHM6UmVhZCJdLCJFZmZlY3QiOiJBbGxvdyIsIlJlc291cmNlIjpbImFjczpvZHBzOio6cHJvamVjdHMvemt5X3Rlc3QvaW5zdGFuY2VzLzIwMTkwNzEwMDQ0MDUyMjE0Z3k2a2MyOTIiXX1dLCJWZXJzaW9uIjoiMSJ9           
  • 打開

    logview

    點選

    master-0

    StdOut

【公共雲支援】MaxCompute Spark支援互動式Zeppelin
# 日志中的這個url,就是zeppelin server的位址了
# 直接複制粘貼到浏覽器上即可通路,彈出的url會需要雲賬号的登入
Please visit the following url for zeppelin interaction.
http://20190710044052214gy6kc292-zeppelin.open.maxcompute.aliyun.com
Log dir doesn't exist, create /worker/zeppelin_logs/
Pid dir doesn't exist, create /worker/zeppelin_pids/
Zeppelin start [60G[[0;32m  OK  [0;39m]           
  • zeppelin url

    Examples

    Notebook,有時候頁面會顯示endpoint not exist的日志,這是因為zeppelin還沒有啟動完畢的情況,稍等片刻就可以
【公共雲支援】MaxCompute Spark支援互動式Zeppelin
  • 如果頁面彈出一個

    interpreter binding

    的頁面,直接點選Save即可,然後再點選ToolBar上的運作所有按鈕即可執行Notebook上的代碼的執行
【公共雲支援】MaxCompute Spark支援互動式Zeppelin
  • 從 examples 樣例中我們可以看到,NoteBook支援三種文法
    • %spark

      開頭表示 scala 執行器 如果不寫就預設是這個模式
    • %sql

      開頭表示 spark-sql 執行器,預設用ODPS External Catalog
    • pyspark

      開頭表示 pyspark 執行器,預設用我們打包好的 python2.7

問題咨詢

有問題就找峰七(林學維)即可。有了這個Zeppelin,有時候我們有一些文法或者spark接口上面不清楚的就可以現在notebook上執行,然後再寫進工程代碼裡,不用一遍一遍的送出那麼沒有效率了。

這個模式相對于local模式更有力的地方是,這個模式其實是真實用了yarn-cluster模式運作着的,local模式僅僅能驗證文法是否正确,而zeppelin模式能以分布式的方式提供互動式查詢,這個對于那種需要關注性能結果的debugging是有幫助的。

資源釋放

本質上Zeppelin Server on MaxCompute Spark還是一個Spark作業,預設這個作業會存活三天,如果你想手動關閉這個作業的話,就請用odpscmd,用

kill <instanceId>;

指令來停止作業釋放資源吧。

繼續閱讀