Zeppelin架构原理分析架构原理分析
一、Zeppelin整体架构分析
首先上一张官方给出的Zeppelin整体架构图
Apache Zeppelin的架构比较简单直观,总共分为3层:
1.Zeppelin 前端
2.Zeppelin Server
3.Zeppelin Interpreter
Zeppelin前端是基于AngularJS(目前社区正在升级改造前端,但是对用户体验不会有影响)。
Zeppelin Server是一个基于Jetty的轻量级Web Server,主要负责以下一些功能:
1.登陆权限管理
2.Zeppelin配置信息管理
3.Interpreter 配置信息和生命周期管理
4.Note存储管理
5.插件机制管理
Zeppelin前端和Zeppelin Server之间的通信机制主要有Rest api和WebSocket两种。Zeppelin Server和Zeppelin Interpreter是
通过Thrift RPC来通信,而且他们彼此之间是双向通信,Zeppelin Server可以向Zeppelin Interpreter发送请求,Zeppelin
Interpreter也可以向Zeppelin Server发送请求。
关于zeppelin采用WebSocket技术的必要性问题,这里也做一下简单分析。zeppelin是共享式、Notebook式的大数据分析环
境,以repl的方式执行以Paragraph为最小粒度的代码段。
1. 首先repl的方式强调实时反馈执行结果,特别是在大数据环境下,一段代码可能需要执行很长时间,在执行的过程
中,zeppelin的用户期望看到执行进度和中间结果,需要在前后端之间建立一个长连接,便于实时传递数据。
2. 另外zeppelin的另一个亮点是其结果可视化能力,需要在前后台传递图片,并且支持较大数据量的传输的能力(相对传统
http技术)。
3. 再者,由于是共享式环境,一个Note可能被多个用户同时看到、甚至编辑,需要在各个已经打开了同一个Note的web客户
端之间同步Note的代码、执行结果和进度信息。
基于以上3点,zeppelin采用WebSocket技术是水到渠成的事情。