zeppelin

zeppelin概述

Zeppelin,于2016-5-18日从Apache孵化器项目毕业成为Apache顶级项目,本质上是一个web应用程序,它以独立的jvm进程的方式来启动Interpreter(解释器),交互式(repl)执行各种语言的代码片段,并将结果以html代码片段的形式返回给前端UI。

源码结构分析

zeppelin的maven项目共有78个module(0.9.0版本),其中7个框架相关的module如下:

Module 作用 开发语言
zeppelin-server 项目的主入口,通过内嵌Jetty的方式提供Web UI和REST服务,并且提供了基本的权限验证服务 java
zeppelin-zengine 实现Notebook的持久化、检索实现interpreter的自动加载,以及maven式的依赖自动加载 java
zeppelin-interpreter 为了支持多语言Notebook,抽象出了每种语言都要事先的Interpreter接口,包括:显示、调度、依赖以及和zeppelin-engine之间的Thirft通信协议 java
zeppelin-web AngluarJS开发的web页面 Javascript(主要是AngularJS、Node.JS以及使用websocket)
zeppelin-display 实现向前台Angular元素绑定后台数据 scala
spark 将spark的interpreter及相关的module集成到一个module中,使整个工程的结构更加合理,flink也是类似的
zeppelin-distribution 为了将整个项目打包成发布版,而设置的module,打包格式见src/assembly/distribution.xml

关键模块之间的关系

依赖关系.png

interpreter的核心抽象

Interpreter抽象类的抽象接口的作用

以下是一些接口及主要接口的一些解释


  • open() 打开解释器,可以将一些常规的初始化操作放在这里,这个方法只会调用一次。
  • close() 关闭解释器,可以将一些释放资源的操作放在这里,这个方法只会调用一次。
  • executePrecode() 如果有一些预处理操作可以放在这个方法中。
  • interpret() 以同步的方式运行代码并返回结果,这个是解释器的主要执行方式。
  • cancel() 可选的实现,用来取消中断interpret方法中的工作。
  • getFormType()
  • getProgress() 获取程序运行的进度。
  • completion() 代码自动完成
  • getScheduler()
  • Interperter()
  • getInterpreterGroup()
  • getProperties() 关于properties的相关接口有很多,这里不一一列举,大体都是一些用各种形式获取properties的操作
  • registerHook() Hook之类的操作目前还是标注为实验性质的,这里不一一列举。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容