【公共云支持】MaxCompute Spark支持交互式Zeppelin

由于安全原因,用户无法触达生产集群的网络,所以MaxCompute Spark一直没有放开 yarn-client的支持,也就是Spark-ShellSpark-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>; 命令来停止作业释放资源吧。

上一篇:Spark SQL repartition 为啥生成的文件变大了?


下一篇:spring源码-增强容器xml解析-3.1