Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
b1661ae
DI-679 added CSP HTTP response header
RaghwendraSingh Jul 30, 2022
cb6eb70
DI-679 added getter & confVar for CSP header
RaghwendraSingh Jul 30, 2022
4999107
DI-679 added header for X-FRAME-OPTIONS
RaghwendraSingh Jul 30, 2022
a441fa1
added interceptor for Fail Fast in jdbc interpreter DI-2332
RaghwendraSingh Sep 8, 2024
abf00ed
fixing compilation error DI-2332
RaghwendraSingh Sep 8, 2024
fb04976
fixing compilation error added ; DI-2332
RaghwendraSingh Sep 8, 2024
00bd799
added pre fail check
amanleloush Sep 11, 2024
73f30b0
added dependency
amanleloush Sep 11, 2024
357f481
added out
amanleloush Sep 11, 2024
98aa97a
updated json string to parse
amanleloush Sep 17, 2024
39f0a7b
added loggers
amanleloush Sep 17, 2024
b6225df
added stract trace
amanleloush Sep 17, 2024
b06c161
removed test loggers
amanleloush Sep 17, 2024
08cf063
updated request payload
amanleloush Sep 17, 2024
682c3dc
updated sql
amanleloush Sep 18, 2024
0e70d81
updated escapae character
amanleloush Sep 18, 2024
e0a936d
updated url
amanleloush Sep 18, 2024
76db3df
added timeout for rca cluster
amanleloush Oct 1, 2024
f0d6248
added logging
amanleloush Oct 2, 2024
7614559
updated get interpreterName
amanleloush Oct 8, 2024
b4e1d0d
removed logger
amanleloush Oct 8, 2024
12dfddc
updated Gson object
amanleloush Oct 10, 2024
e54907b
feat: suffixing the STATEMENT_TIMEOUT = 10800 before rca interpreter …
shagil-meesho Oct 17, 2024
9c94471
F/jdbc custom interpreter (#22)
Vishvas-meesho Apr 17, 2025
10d80b6
Merge pull request #23 from Meesho/f/jdbc_custom_interpreter
RaghwendraSingh Jun 30, 2025
d8ac2f1
added 1 hour restriction
anuraags2719 Jun 30, 2025
7b73daf
Merge pull request #24 from Meesho/spark_timeout_restrict
RaghwendraSingh Jul 9, 2025
03a6294
Revert "added 1 hour restriction"
anuraags2719 Jul 15, 2025
ba4c436
Merge pull request #25 from Meesho/revert-24-spark_timeout_restrict
anuraags2719 Jul 15, 2025
f08494e
passing interpreter_name to fail_fast (#27)
Vishvas-meesho Aug 7, 2025
11ff954
Add .cursor directory and update .gitignore for AI documentation
keshavpandya06 Sep 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
335 changes: 335 additions & 0 deletions .cursor/documentation/architecture/architecture.md

Large diffs are not rendered by default.

357 changes: 357 additions & 0 deletions .cursor/documentation/architecture/core_server_components.md

Large diffs are not rendered by default.

376 changes: 376 additions & 0 deletions .cursor/documentation/architecture/interpreter_framework.md

Large diffs are not rendered by default.

222 changes: 222 additions & 0 deletions .cursor/documentation/architecture/module_structure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
# Module Structure

<details>
<summary>Relevant source files</summary>

The following files were used as context for generating this wiki page:

- [.gitignore](.gitignore)
- [README.md](README.md)
- [pom.xml](pom.xml)
- [spark/pom.xml](spark/pom.xml)
- [zeppelin-display/pom.xml](zeppelin-display/pom.xml)
- [zeppelin-distribution/pom.xml](zeppelin-distribution/pom.xml)
- [zeppelin-interpreter/pom.xml](zeppelin-interpreter/pom.xml)
- [zeppelin-server/pom.xml](zeppelin-server/pom.xml)
- [zeppelin-web/pom.xml](zeppelin-web/pom.xml)
- [zeppelin-zengine/pom.xml](zeppelin-zengine/pom.xml)

</details>



This document describes the Maven module structure of Apache Zeppelin, including the organization of core components, interpreter modules, and their dependencies. This covers the build system architecture and module relationships that define how Zeppelin is assembled and packaged.

For information about the runtime architecture and component interactions, see [Core Server Components](#2.2). For details about individual interpreter implementations, see [Interpreters](#5).

## Module Organization

Zeppelin is organized as a multi-module Maven project with over 50 modules grouped into several logical categories. The root project defines the overall structure and shared configuration.

```mermaid
graph TB
subgraph "Core Infrastructure"
Common["zeppelin-common<br/>Shared utilities"]
Interpreter["zeppelin-interpreter<br/>Base interpreter framework"]
Zengine["zeppelin-zengine<br/>Core engine"]
Display["zeppelin-display<br/>Display APIs"]
Server["zeppelin-server<br/>REST APIs & WebSocket"]
Web["zeppelin-web<br/>Angular frontend"]
Distribution["zeppelin-distribution<br/>Packaging"]
end

subgraph "Language Interpreters"
Spark["spark/*<br/>Scala interpreters"]
Python["python<br/>Python interpreter"]
Java["java<br/>Java interpreter"]
Kotlin["kotlin<br/>Kotlin interpreter"]
RLang["rlang<br/>R interpreter"]
Groovy["groovy<br/>Groovy interpreter"]
end

subgraph "Data Platform Interpreters"
JDBC["jdbc<br/>Database connectivity"]
MongoDB["mongodb<br/>MongoDB connector"]
Cassandra["cassandra<br/>Cassandra connector"]
Elasticsearch["elasticsearch<br/>Search engine"]
BigQuery["bigquery<br/>Google BigQuery"]
HBase["hbase<br/>HBase connector"]
end

subgraph "Stream Processing"
Flink["flink<br/>Stream processing"]
Livy["livy<br/>Remote Spark"]
Beam["beam<br/>Apache Beam"]
FlinkCmd["flink-cmd<br/>Flink commands"]
end

subgraph "Utility Modules"
Markdown["markdown<br/>Markdown interpreter"]
Shell["shell<br/>Shell interpreter"]
File["file<br/>File system"]
Angular["angular<br/>AngularJS support"]
Jupyter["zeppelin-jupyter<br/>Jupyter integration"]
Plugins["zeppelin-plugins<br/>Plugin system"]
end
```

Sources: [pom.xml:54-103]()

## Core Module Dependencies

The core infrastructure modules have a layered dependency structure where higher-level components build upon lower-level foundations.

```mermaid
graph TD
Common["zeppelin-common"]
Interpreter["zeppelin-interpreter"]
Display["zeppelin-display"]
Jupyter["zeppelin-jupyter"]
Zengine["zeppelin-zengine"]
Server["zeppelin-server"]
Web["zeppelin-web"]
Distribution["zeppelin-distribution"]

Interpreter --> Common
Display --> Interpreter
Jupyter --> Common
Zengine --> Common
Zengine --> Interpreter
Zengine --> Jupyter
Server --> Zengine
Distribution --> Server
Distribution --> Web
```

Sources: [zeppelin-server/pom.xml:54](), [zeppelin-zengine/pom.xml:48-72](), [zeppelin-distribution/pom.xml:77-87](), [zeppelin-display/pom.xml:67-71]()

## Core Infrastructure Modules

| Module | Artifact ID | Purpose | Key Dependencies |
|--------|-------------|---------|------------------|
| Common | `zeppelin-common` | Shared utilities and base classes | None (foundation) |
| Interpreter | `zeppelin-interpreter` | Base interpreter framework and API | `zeppelin-common` |
| Display | `zeppelin-display` | Display system APIs for visualizations | `zeppelin-interpreter` |
| Zengine | `zeppelin-zengine` | Core notebook engine and business logic | `zeppelin-common`, `zeppelin-interpreter`, `zeppelin-jupyter` |
| Server | `zeppelin-server` | REST APIs, WebSocket server, web container | `zeppelin-zengine` |
| Web | `zeppelin-web` | Angular.js frontend application | None (frontend only) |
| Distribution | `zeppelin-distribution` | Final packaging and assembly | `zeppelin-server`, `zeppelin-web` |

The `zeppelin-common` module serves as the foundation, providing shared utilities used across all other components. The `zeppelin-interpreter` module defines the core interpreter framework that all language-specific interpreters extend.

Sources: [zeppelin-server/pom.xml:50-95](), [zeppelin-zengine/pom.xml:45-72](), [zeppelin-distribution/pom.xml:76-88]()

## Interpreter Module Hierarchy

Interpreters are organized under a parent module structure that provides shared configuration and dependencies.

```mermaid
graph TD
Root["zeppelin<br/>Root POM"]
InterpParent["zeppelin-interpreter-parent<br/>Shared interpreter config"]

subgraph "Spark Ecosystem"
SparkParent["spark-parent<br/>Spark configuration"]
SparkInterp["spark/interpreter<br/>Core Spark interpreter"]
SparkScala["spark-scala-parent<br/>Scala version support"]
Scala211["spark/scala-2.11"]
Scala212["spark/scala-2.12"]
Scala213["spark/scala-2.13"]
SparkShims["spark-shims<br/>Version compatibility"]
Spark2Shims["spark2-shims"]
Spark3Shims["spark3-shims"]
end

subgraph "Other Interpreters"
Python["python"]
JDBC["jdbc"]
Flink["flink"]
Shell["shell"]
end

Root --> InterpParent
InterpParent --> SparkParent
InterpParent --> Python
InterpParent --> JDBC
InterpParent --> Flink
InterpParent --> Shell

SparkParent --> SparkInterp
SparkParent --> SparkScala
SparkParent --> SparkShims
SparkParent --> Spark2Shims
SparkParent --> Spark3Shims
SparkScala --> Scala211
SparkScala --> Scala212
SparkScala --> Scala213
```

Sources: [pom.xml:55](), [spark/pom.xml:24-67]()

## Build Configuration and Profiles

The build system uses Maven profiles to support different Hadoop versions and deployment configurations. Key properties are defined at the root level and inherited by child modules.

| Property Category | Key Properties | Purpose |
|-------------------|----------------|---------|
| Language Versions | `java.version`, `scala.version`, `scala.binary.version` | Define language runtime versions |
| Hadoop Support | `hadoop.version`, `hadoop.deps.scope` | Configure Hadoop integration |
| Frontend Build | `node.version`, `npm.version`, `plugin.frontend.version` | Control web build process |
| Library Versions | `jetty.version`, `gson.version`, `libthrift.version` | Manage dependency versions |

The root POM defines two main Hadoop profiles:
- `hadoop2`: Uses Hadoop 2.7.x (default)
- `hadoop3`: Uses Hadoop 3.2.x

Sources: [pom.xml:105-216](), [zeppelin-server/pom.xml:482-519]()

## Shaded and Integration Modules

Several modules use Maven shading to resolve dependency conflicts and provide integration capabilities:

```mermaid
graph LR
InterpShaded["zeppelin-interpreter-shaded<br/>Shaded interpreter deps"]
JupyterShaded["zeppelin-jupyter-interpreter-shaded<br/>Shaded Jupyter deps"]
Client["zeppelin-client<br/>Java client API"]
ClientExamples["zeppelin-client-examples<br/>Usage examples"]

Interpreter --> InterpShaded
Jupyter --> JupyterShaded
Client --> ClientExamples
```

The shaded modules package dependencies with relocated class names to avoid conflicts when Zeppelin is embedded in other applications or when interpreters have conflicting dependency versions.

Sources: [pom.xml:57,62,96-97]()

## Web Application Build

The `zeppelin-web` module uses the frontend-maven-plugin to build the Angular.js application:

| Build Phase | Goal | Purpose |
|-------------|------|---------|
| Install | `install-node-and-npm` | Download Node.js and npm |
| Dependencies | `npm install` | Install JavaScript dependencies |
| Build | `npm run build:dist` | Build production assets |
| Test | `npm run karma-test` | Run unit tests |
| Integration Test | `npm run e2e` | Run end-to-end tests |

The web module produces a WAR file that contains the compiled frontend assets and is included in the final distribution.

Sources: [zeppelin-web/pom.xml:56-123](), [zeppelin-web/pom.xml:211-235]()
Loading