Apache Zeppelin 构建基础设施全解析:模块依赖、构件产物与端到端验证流程

📅 发布时间:2026/10/10 9:08:47
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),仅供参考