Apache Zeppelin系列教程第二篇——整体架构

简介: Apache Zeppelin系列教程第二篇——整体架构

Zeppelin 架构:

首先我们来了解下 Zeppelin的架构, Zeppelin 主要分3层。

Web前端

Zeppelin Server

Interpreter

Zeppelin前端负责前端页面的交互,通过Rest API 和WebSocket的方式与Zeppelin Server进行交互。

Zeppelin Server是一个Web server,负责管理所有的note,interpreter 等等,Zeppelin Server不做具体的代码执行,会交给Interpreter来执行代码

Interpreter 是一个独立的进程,负责具体前端用户提交的代码的执行(比如Spark Scala代码或者SQL代码等等)。Zeppelin Server与 Interpreter 自己是通过thrift 来进行通信,而且是双向通信。Zeppelin支持目前大部分流行的大数据引擎,上图只展示了其中3种比较常用的引擎:Flink,Spark,Jdbc

Zeppelin Server是独立的进程,进程日志在logs目录下的 zeppelin-{user}-{host}.log, 每个Interpreter也是一个独立的进程,进程日志是 logs目录下的 zeppelin-interpreter-{interpreter}-*.log, 所以如果碰到任何问题可以先去这两个log文件里去查找线索

关于zeppelin采用WebSocket技术的必要性问题,这里也做一下简单分析。zeppelin是共享式、Notebook式的大数据分析环境,以repl的方式执行以Paragraph为最小粒度的代码段。

1. 首先repl的方式强调实时反馈执行结果,特别是在大数据环境下,一段代码可能需要执行很长时间,在执行的过程中,zeppelin的用户期望看到执行进度和中间结果,需要在前后端之间建立一个长连接,便于实时传递数据。

2. 另外zeppelin的另一个亮点是其结果可视化能力,需要在前后台传递图片,并且支持较大数据量的传输的能力(相对传统http技术)。

3. 再者,由于是共享式环境,一个Note可能被多个用户同时看到、甚至编辑,需要在各个已经打开了同一个Note的web客户端之间同步Note的代码、执行结果和进度信息。

zeppelin 涉及到的技术

前端:

AngularJS

zeppelin 前端websocket 发送请求代码:zeppelin-web\src\components\websocket\websocket-message.service.js

后端:

Zeppelin使用了Jetty作为内嵌服务器,通信方式除了WebSocket,还使用Jersey框架提供了Restful服务。

由于Zeppelin的解释器(Interpreter)是独立的JVM进程,因此Zeppelin使用Apache Commons Exec框架来使主进程可以启动解释器进程,并且使用Thrift框架在主进程与解释器进程间进行通信。

Zeppelin还提供了Apache Shiro进行权限控制,使用Apache Lucence对Note进行全文检索。

后端启动服务的代码(Zeppelin Server 程序的入口类):zeppelin-server\src\main\java\org\apache\zeppelin\server\ZeppelinServer.java

后端接收websocket请求的代码:zeppelin-server\src\main\java\org\apache\zeppelin\socket\NotebookServer.java

前端websocket请求

【webSocket 】Chrome 浏览器中查看 webSocket 连接信息_chrome websocket_大东子来搬砖的博客-CSDN博客

后端接受rest请求的代码:zeppelin-server\src\main\java\org\apache\zeppelin\rest\NotebookRestApi.java

前端打包:zeppelin-web 里面运行 npm run build:dist

前端打包:zeppelin-web-angular 里面运行 npm run build

zeppelin/README.md at master · apache/zeppelin · GitHub

后端服务打包:在根目录下 mvn clean package -DskipTests -Phadoop2

参考:

Apache Zeppelin · 语雀

https://www.jianshu.com/p/02596c7a2342

https://blog.csdn.net/swimhigh/article/details/80755666#comments_8150094

https://code-monkey.top/2019/06/12/Zeppelin%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-note%E7%9A%84%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B/

https://blog.csdn.net/spacewalkman/article/details/69230145

zeppelin源码分析——server端_H10242的博客-CSDN博客

zeppelin涉及到的相关技术介绍:

(1)websocket 介绍

WebSocket 教程 - 阮一峰的网络日志

Websocket技术的Java实现(上篇)_@serverendpoint路径_KeepStruggling的博客-CSDN博客

(2)java8 function新特性

Java8新特性二: Functional Interfaces - 知乎

(3)commons-exec 执行command命令

程序员的福音 - Apache Commons Exec - 知乎

(4)thrift

Apache Thrift系列详解(一) - 概述与入门 - 掘金


相关文章
|
12天前
|
Dubbo Java 应用服务中间件
Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
122 12
|
11月前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
335 4
|
6月前
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
527 3
网易游戏 x Apache Doris:湖仓一体架构演进之路
|
6月前
|
Java 数据库连接 应用服务中间件
JavaWeb CRUD 与分页系统架构学习教程
本教程详细讲解了如何使用 Java Web 技术构建一个带有 CRUD 和分页功能的应用程序。以产品信息管理为例,采用 MVC 架构设计,涵盖 Servlet、JSP、JDBC/MyBatis 等技术。内容包括基础知识介绍、项目结构划分、数据库连接配置、DAO 层实现、Service 层设计、Servlet 控制层编写、JSP 前端展示以及分页功能的实现。同时涉及日志配置和 Tomcat 部署运行。通过分层开发,确保代码清晰、职责分明,便于维护和扩展。适合初学者掌握 Java Web 开发全流程,并为学习更高级框架奠定基础。
148 0
|
7月前
|
Java 数据库连接 应用服务中间件
JavaWeb CRUD 与分页系统架构学习教程
本教程将带你一步步构建一个 Java Web 的 CRUD(创建、读取、更新、删除)及分页功能的示例应用,涵盖从基本概念到完整项目架构的各个层次。
145 3
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 1 架构解读
PolarDB 是阿里云研发的云原生分布式数据库,基于 PostgreSQL 开源版本,旨在解决传统数据库在大规模数据和高并发场景下的性能和扩展性问题。其主要特点包括: 1. **存储计算分离架构**:通过将计算与存储分离,实现极致弹性、共享一份数据以降低成本、透明读写分离。 2. **HTAP 架构**:支持混合事务处理和分析处理(HTAP),能够在同一系统中高效执行 OLTP 和 OLAP 查询。 3. **优化的日志复制机制**:采用只复制元数据的方式减少网络传输量,优化页面回放和 DDL 锁回放过程。 4. **并行查询与索引创建**:引入 MPP 分布式执行引擎。
395 8
|
7月前
|
存储 消息中间件 人工智能
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
基于 Apache RocketMQ 的 ApsaraMQ Serverless 架构升级
151 0
|
10月前
|
存储 消息中间件 缓存
独特架构打造新一代消息队列Apache Pulsar
Apache Pulsar 是一个开源的分布式消息流平台,由雅虎开发并于 2016 年开源,2018 年成为 Apache 顶级项目。Pulsar 通过独特的架构提供多租户、持久化存储和批处理等高级功能,支持高吞吐量、低延迟的消息传递。其核心组件包括 Broker、Apache BookKeeper 和 Apache ZooKeeper,分别负责消息处理、持久化存储和集群管理。
400 1

推荐镜像

更多