Apache Zeppelin 构建基础设施全解析:模块依赖、构件产物与端到端验证流程
后端前端大数据数据分析【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin2/zeppelin点击查看免费下载本文以 zeppelin-distribution/build-infrastructure.md 为核心骨架系统梳理 Apache Zeppelin 的构建基础设施从模块级依赖图、四类核心构件产物到 Maven 多模块构建流水线再到基于 Selenium 的端到端验证闭环。读完本文你将掌握 Zeppelin 源码仓库的模块组织方式、每个 Maven 阶段产出的具体文件形态以及如何用-Pbuild-distr、mvn verify等命令复现官方发行版的构建与测试流程。依赖图Zeppelin 的模块级架构build-infrastructure.md用一张极简的 ASCII 依赖图概括了 Zeppelin 顶层的模块依赖关系e.g. hive, hadoop, ... | | | v v v Zeppelin Server - Zengine | zeppeli web v ZAN这张图传递了两个关键信息外部引擎位于最外层hive、hadoop 等第三方解释器依赖Spark、Hive、Cassandra、JDBC 等所有 interpreter被抽象为外部依赖它们被 Zeppelin Server 与 Zengine 之上的解释器层消费而不进入核心构建链。核心依赖链自底向上ZAN → Zengine → Zeppelin Server / Zeppelin Web。Zengine 是核心库同时被 Server服务端承载与 Web客户端展示两侧依赖从命名与依赖关系可以推断ZAN 是位于最底层、与 Web 前端交互的运行时组件对应 Zeppelin 的 Angular 显示系统它向上支撑 Zengine 的展示能力。在源码层面这一依赖链由根 pom.xml 的modules声明落实zeppelin-interpreter、zeppelin-zengine、zeppelin-display等核心库排在最前随后是各解释器模块spark、markdown、shell、jdbc、python 等 20 余个最后是zeppelin-web、zeppelin-server、zeppelin-jupyter与收尾的zeppelin-distribution。多模块按依赖顺序构建zeppelin-distribution被刻意排在最后以聚合所有产物。构件产物Artifacts四种核心交付物原文档定义了构建产生的四类构件对应关系如下构件形态来源模块说明Zeppelin Server可执行服务端zeppelin-serverWeb 服务器及其承载的 Web UI可启动运行Zeppelin Webwar 包HTML JavaScriptzeppelin-web客户端 JS 应用通过 frontend-maven-plugin 构建前端资源Zeppelin ZengineJava 库jarzeppelin-zengine整个系统的核心库包含 Notebook、解释器管理等主要逻辑ZAN运行时组件—依赖图最底层与 Web 前端交互的 Angular 显示系统运行时支撑 Web UI 与后端的数据通信其中 Server 与 Web 的关系在 zeppelin-distribution/pom.xml 中可见一斑zeppelin-distribution显式依赖zeppelin-serverjar与zeppelin-webwar 类型二者共同构成可交付的发行版。构建流程从源码到发行包的五个阶段build-infrastructure.md将构建过程归纳为五个阶段每个阶段对应 Maven 生命周期与具体产物compile *.class, minify *.js build modules *.jar, *.war test UnitTest reports package -P build-distr final .zip integration-test selenium over running zeppelin-server (from package)1. compile字节码与前端压缩Java/Scala 源码经编译器产出.class同时zeppelin-web模块借助 frontend-maven-plugin根 pom.xml 中声明了node.version v8.9.3、npm.version 5.5.1等版本属性下载 Node/npm 并执行前端构建产出经过 minify 的.js资源。前端应用源码位于 zeppelin-web/src/app其构建配置见 zeppelin-web/package.json。2. build modules各模块打包各 Maven 模块按依赖顺序打成 jar如zeppelin-zengine、各 interpreter与 war如zeppelin-web形成可复用的构件库。3. test单元测试执行 surefire 单元测试并产出测试报告。根 pom.xml 声明了junit 4.12、mockito 1.10.19、powermock 1.6.4等测试库版本各模块的src/test目录存放对应测试用例。4. package -P build-distr聚合最终发行包这是产出最终发行物的关键阶段。build-distrprofile 定义于根 pom.xml它激活maven-assembly-plugin的make-assembly执行绑定到package阶段并跳过 surefire 单元测试。典型命令详见 docs/setup/basics/how_to_build.md# 不带额外 profile 的最小发行包 mvn clean package -Pbuild-distr # 携带特定 Spark/Hadoop 版本构建 mvn clean package -Pbuild-distr -Pspark-1.5 -Phadoop-2.4聚合规则定义在 zeppelin-distribution/src/assemble/distribution.xml输出格式为目录dir与tar.gz基础目录名为zeppelin-${project.version}zip格式在注释中预留依赖集将zeppelin-web放入根目录、zeppelin-interpreter及其target/lib放入lib/interpreter其余依赖经传递过滤后进入lib文件集拷贝仓库根目录的README.md、LICENSE*、NOTICE、DISCLAIMER、bin、conf排除 credentials/interpreter/authorization/shiro 等运行时敏感文件、licenses、interpreter、notebook前端可扩展资源被装配为lib/node_modules/zeppelin-vis、zeppelin-tabledata、zeppelin-spell分别取自 zeppelin-web/src/app/visualization、zeppelin-web/src/app/tabledata、zeppelin-web/src/app/spell。最终发行归档生成于zeppelin-distribution/target目录。5. integration-test对运行中 Server 的 Selenium 测试发行包构建完成后端到端测试驱动无头 Selenium 浏览器针对正在运行的zeppelin-server执行验收用例详见下文验证流程。该阶段由 zeppelin-integration/pom.xml 承载依赖selenium-java 3.8.1并通过 maven-failsafe-plugin 绑定integration-test与verifygoal。发行版的进阶打包能力除 tar.gz 外zeppelin-distribution/pom.xml 还提供两个可选 profilepublish-distr跳过测试并重新执行 assembly配合 S3 凭据通过settings.xml注入s3-upload.accessKey/secretKey可将发行包发布到 S3deb基于 jdeb 插件生成 Debian 包产出zeppelin-${version}-${buildNumber}_all.deb将bin、conf、lib、interpreter、notebook等目录映射到/usr/share/zeppelin、/etc/zeppelin、/var/log/zeppelin、/var/run/zeppelin、/var/lib/zeppelin等系统路径并建立/usr/bin/zeppelin-daemon.sh软链接与 init.d 脚本方便系统化安装与守护进程管理。验证流程端到端测试的三段式闭环build-infrastructure.md将验证阶段描述为三步注意原文拼写为 pre-inegration-test / post-inegration-test实际对应 Maven 的 pre-integration-test / post-integration-test 阶段pre-integration-test 启动 Zeppelin integration-test 执行 Selenium 端到端用例 post-integration-test 停止 Zeppelin这三步在 zeppelin-integration/pom.xml 中有精确的插件级实现pre-integration-testmaven-antrun-plugin的start-zeppelinexecution 执行./zeppelin-daemon.sh start除非skipTestsintegration-testfailsafe 运行src/test/java中以IT结尾的集成测试类测试堆内存配置为-Xmx2048mpost-integration-teststop-zeppelinexecution 执行./zeppelin-daemon.sh stop测试环境变量设ZEPPELIN_FORCE_STOP1确保进程被彻底清理。daemon 脚本位置由两个 profile 决定Profile激活方式zeppelin.daemon.package.base含义using-source-tree默认激活../bin直接从源码树启动bin/zeppelin-daemon.shusing-packaged-distr-P using-packaged-distr../zeppelin-distribution/target/zeppelin-${project.version}/.../bin从打包后的发行物启动验证真实发行包对应命令同样见 docs/setup/basics/how_to_build.md# 假设 zeppelin-server 已运行在 localhost:8080可用 -Durl.. 覆盖 mvn verify # 或由测试自动从 zeppelin-distribution/target 启动/停止 zeppelin-server mvn verify -P using-packaged-distr集成测试基类 AbstractZeppelinIT.java 定义了典型的操作原语通过 XPath 定位 Paragraph(//div[ng-controllerParagraphCtrl])[n]、用ace.edit(...)写入段落代码、点击运行按钮、以 FluentWait 轮询段落状态MAX_PARAGRAPH_TIMEOUT_SEC 120秒并支持对 WebDriver 隐式等待的开/关控制。仓库中实际包含的端到端用例包括 ZeppelinIT.java、InterpreterIT.java、ParagraphActionsIT.java、SparkParagraphIT.java 等覆盖 Notebook 基础操作、解释器管理、段落执行、个性化等真实用户路径ZeppelinITUtils.java 则封装了restartZeppelin()调用../bin/zeppelin-daemon.sh restart等辅助能力。总结一条从源码到验收的完整链路结合以上分析可以得出 Apache Zeppelin 构建基础设施的完整认知架构上Zeppelin 以ZAN → Zengine → Server/Web为核心依赖链外部解释器引擎作为最外层依赖接入产物上四类构件Server 可执行体、Web war、Zengine 库、ZAN 运行时由根 pom.xml 声明的多模块流水线逐步产出发行上-Pbuild-distr通过 distribution.xml 的依赖集与文件集规则把 jar/war、bin 脚本、conf 模板、notebook 示例与前端扩展聚合为zeppelin-distribution/target下的 tar.gz可选 deb质量上pre-integration-test / integration-test / post-integration-test三段式闭环保证了发行包不仅是能打包而且是能跑通——无头浏览器真实驱动运行中的 Zeppelin 完成验收。理解这条构建基础设施无论是为了定制发行包、调试集成测试还是向 Zeppelin 贡献新解释器都能快速定位到正确的模块、profile 与验证入口。赞分享后端前端大数据数据分析【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin2/zeppelin点击查看免费下载相关推荐Apache Zeppelin 构建基础设施深度解析多模块依赖、分发打包与端到端集成测试Apache Zeppelin 构建基础设施深度解析多模块依赖、分发打包与端到端集成测试 本文以 Apache Zeppelin 官方 build infra数据分析数据可视化大数据后端前端任务调度Apache Pulsar 仓库架构地图模块分层、并发模型与 Gradle 构建基础设施全解析Apache Pulsar 仓库架构地图模块分层、并发模型与 Gradle 构建基础设施全解析 Apache Pulsar 是一个分布式发布 订阅pub s消息队列流处理后端微服务消息路由Apache Zeppelin 测试基础设施的 Python 依赖锁定指南Conda 与 PyFlink Lock 文件管理实战Apache Zeppelin 测试基础设施的 Python 依赖锁定指南Conda 与 PyFlink Lock 文件管理实战 本指南围绕 Apache Z数据分析数据可视化大数据后端前端任务调度上一篇CLM-v0.1-8B为什么是Agent验证器黑马DeepSWE 81.6%与Terminal-Bench 87.6%的SOTA全解析下一篇如何用 LLM Checker 快速检测你的硬件能跑哪些大模型完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

基于PageRank的社交网络用户分析与预测flask框架机器学习算法

基于PageRank的社交网络用户分析与预测flask框架机器学习算法

✅源码获取: 🍅--------------------【点击左上方头像,在置顶文章上方的wx】联系我们-------------🍅✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。✌服务范围:大数据、机器学习…

2026/10/11 12:11:45 阅读更多 →
gPROMS二次开发教程(06):MODEL 语言精讲(二)——数组、并行结构与层次化模型

gPROMS二次开发教程(06):MODEL 语言精讲(二)——数组、并行结构与层次化模型

gPROMS二次开发教程(06):MODEL 语言精讲(二)——数组、并行结构与层次化模型版本声明块 工具/软件:gPROMS 桌面建模环境 gPROMS ModelBuilder;检索期官方发布锚点 gPROMS Process 2022.1.0&…

2026/10/11 10:23:12 阅读更多 →
解读学习网络数据安全风险评估解决方案

解读学习网络数据安全风险评估解决方案

本 66 页 PPT 适配数据安全合规、第三方风险评估咨询方案编制,紧扣《网络数据安全风险评估办法》与 GB/T45577‑2025 最新国标要求。梳理法规政策演进,明确强制与鼓励评估适用场景,输出评估准备、调研、识别、分析评价、总结五阶段标准化流程…

2026/10/11 9:56:02 阅读更多 →

最新新闻

基于YOLOv8的大豆叶病检测:从数据集构建到模型部署全流程

基于YOLOv8的大豆叶病检测:从数据集构建到模型部署全流程

简介:这份资源面向深度学习入门者与计算机视觉方向的学习者,以大豆叶病检测为实战场景,帮助读者理解YOLOv8目标检测框架的整体构建流程。内容围绕数据采集与预处理、网络架构设计、基于PyTorch的训练与推理、模型评估指标监控以及部署时的模型…

2026/10/11 21:19:10 阅读更多 →
深入解析 Kubernetes Python 客户端 V2CrossVersionObjectReference 模型:跨版本对象引用与 HPA 实战

深入解析 Kubernetes Python 客户端 V2CrossVersionObjectReference 模型:跨版本对象引用与 HPA 实战

后端云原生容器编排 【免费下载链接】python Official Python client library for kubernetes 项目地址: https://gitcode.com/gh_mirrors/python1/python 点击查看 免费下载 导读:V2CrossVersionObjectReference 是 Kubernetes Python 官方客户端&…

2026/10/11 21:19:10 阅读更多 →
CoreCoder命令大全:/model、/compact、/tokens、/undo等斜杠命令让你像老司机一样驾驭编码Agent

CoreCoder命令大全:/model、/compact、/tokens、/undo等斜杠命令让你像老司机一样驾驭编码Agent

【免费下载链接】CoreCoder Minimal AI coding agent (~1,000 lines of Python) inspired by Claude Code. Works with any LLM. Think NanoGPT for coding agents. Formerly NanoCoder. 项目地址: https://gitcode.com/gh_mirrors/co/CoreCoder 点击查看 免费下载 …

2026/10/11 21:19:10 阅读更多 →
WorldWideView状态管理指南:Zustand九大数据切片如何组织一个3D地球应用

WorldWideView状态管理指南:Zustand九大数据切片如何组织一个3D地球应用

【免费下载链接】worldwideview 项目地址: https://gitcode.com/gh_mirrors/wo/worldwideview 点击查看 免费下载 WorldWideView 是一款在浏览器中运行的大型 3D 地球实时态势感知平台,它用 Zustand 状态管理方案,把相机、图层、时间轴、UI、…

2026/10/11 21:19:10 阅读更多 →
你的代码去了哪里?PR Lens 安全与隐私设计:自带 Key、零遥测与令牌轮换机制

你的代码去了哪里?PR Lens 安全与隐私设计:自带 Key、零遥测与令牌轮换机制

【免费下载链接】pr-lens Review code 100X faster. Lens draws every PR as animated architecture and data-flow walkthroughs, inside the pull request itself. Use it as a GitHub App, GitHub Action, CLI, or a Skill for your coding agent 项目地址: http…

2026/10/11 21:19:10 阅读更多 →
共享自行车检测系统工程落地:YOLOv8+PyQt5实战避坑指南

共享自行车检测系统工程落地:YOLOv8+PyQt5实战避坑指南

简介:本资源是一套面向计算机、人工智能及自动化等专业学生与初学者的共享自行车智能识别与违停检测实战项目,聚焦城市治理中共享单车乱停放问题,提供从数据采集、模型训练到GUI部署的完整闭环方案。压缩包共889个文件,含304张标注…

2026/10/11 21:18:09 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →