由于安全原因,使用者無法觸達生産叢集的網絡,是以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
- 第一次運作腳本會出現以下錯誤,這是因為預設的
并沒有配置accessId,accessKey,projectNamespark-zeppelin-public.conf
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

# 日志中的這個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
Notebook,有時候頁面會顯示endpoint not exist的日志,這是因為zeppelin還沒有啟動完畢的情況,稍等片刻就可以Examples
- 如果頁面彈出一個
的頁面,直接點選Save即可,然後再點選ToolBar上的運作所有按鈕即可執行Notebook上的代碼的執行interpreter binding
- 從 examples 樣例中我們可以看到,NoteBook支援三種文法
- 以
開頭表示 scala 執行器 如果不寫就預設是這個模式%spark
-
開頭表示 spark-sql 執行器,預設用ODPS External Catalog%sql
-
開頭表示 pyspark 執行器,預設用我們打包好的 python2.7pyspark
- 以
問題咨詢
有問題就找峰七(林學維)即可。有了這個Zeppelin,有時候我們有一些文法或者spark接口上面不清楚的就可以現在notebook上執行,然後再寫進工程代碼裡,不用一遍一遍的送出那麼沒有效率了。
這個模式相對于local模式更有力的地方是,這個模式其實是真實用了yarn-cluster模式運作着的,local模式僅僅能驗證文法是否正确,而zeppelin模式能以分布式的方式提供互動式查詢,這個對于那種需要關注性能結果的debugging是有幫助的。
資源釋放
本質上Zeppelin Server on MaxCompute Spark還是一個Spark作業,預設這個作業會存活三天,如果你想手動關閉這個作業的話,就請用odpscmd,用
kill <instanceId>;
指令來停止作業釋放資源吧。