From fae91919f16501152d842fed8741d94643a56a1b Mon Sep 17 00:00:00 2001 From: kimyenac Date: Mon, 21 Sep 2026 18:51:30 +0900 Subject: [PATCH 1/3] [ZEPPELIN-6460] Deprecate the Vagrant developer environment The toolchain the Vagrant setup under scripts/vagrant/zeppelin-dev provisions has not been updated since 2018, and provisioning can no longer succeed: the ubuntu/xenial64 box is past end of life, the Ansible roles install Python 2 packages that supported Ubuntu releases no longer carry, the maven role resolves Maven 3.3.9 through closer.cgi to a mirror that answers 404 (3.3.9 is only on archive.apache.org now), and the versions it installs (OpenJDK 8, Maven 3.3.9, Node.js 4.2.6) are far below the project baseline. Rather than rewrite provisioning that cannot be verified, mark it deprecated and fix the pointers so it no longer sends contributors to obsolete instructions: - Replace git://git.apache.org/zeppelin.git with the HTTPS GitHub URL. - Drop the -Pspark-1.6 -Phadoop-2.4 build line in favour of ./mvnw, and link to the current build profiles instead. - Present the versions the roles install as what is outdated about them, and add the project baseline (JDK 11, Maven 3.6.3, Node.js 22.21.1 / npm 10.9.4) next to it, each pointing at the pom property that defines it, noting that only the JDK has to be installed by hand. - Drop the Python 2.7 prerequisite, the "ansible 1.9.2 or higher" check and the Python 2 PySpark examples, which are syntax errors under Python 3 and rely on the python-addons role that no longer works. README.md, show-instructions.sh and the Vagrantfile carry the notice, which matters because zeppelin-distribution ships the whole scripts/ directory, so release users receive these files too. docs/setup/deployment/virtual_machine.md is rewritten to match them; it had drifted even further, still documenting Ubuntu 14.04, Node.js 0.12.7 and OpenJDK 7. The docs index and navigation label the page as deprecated. --- .../themes/zeppelin/_navigation.html | 2 +- docs/index.md | 2 +- docs/setup/deployment/virtual_machine.md | 234 +++++++++--------- scripts/vagrant/zeppelin-dev/README.md | 210 +++++++--------- scripts/vagrant/zeppelin-dev/Vagrantfile | 5 + .../vagrant/zeppelin-dev/show-instructions.sh | 23 +- 6 files changed, 231 insertions(+), 245 deletions(-) diff --git a/docs/_includes/themes/zeppelin/_navigation.html b/docs/_includes/themes/zeppelin/_navigation.html index 82eb3d6d49c..4ed1a8d83a1 100644 --- a/docs/_includes/themes/zeppelin/_navigation.html +++ b/docs/_includes/themes/zeppelin/_navigation.html @@ -100,7 +100,7 @@
  • Spark Cluster Mode: Mesos
  • Zeppelin with Flink, Spark Cluster
  • Zeppelin on CDH
  • -
  • Zeppelin on VM: Vagrant
  • +
  • Zeppelin on VM: Vagrant (deprecated)
  • Security
  • HTTP Basic Auth using NGINX
  • diff --git a/docs/index.md b/docs/index.md index feca2b36930..b38f77bfada 100644 --- a/docs/index.md +++ b/docs/index.md @@ -99,7 +99,7 @@ limitations under the License. * [Spark Cluster Mode: Mesos](./setup/deployment/spark_cluster_mode.html#spark-on-mesos-mode) * [Zeppelin with Flink and Spark Cluster](./setup/deployment/flink_and_spark_cluster.html) * [Zeppelin on CDH](./setup/deployment/cdh.html) - * [Zeppelin on VM: Vagrant](./setup/deployment/virtual_machine.html) + * [Zeppelin on VM: Vagrant (deprecated)](./setup/deployment/virtual_machine.html) * Security: available security support in Apache Zeppelin * [HTTP Basic Auth using NGINX](./setup/security/authentication_nginx.html) * [Shiro Authentication](./setup/security/shiro_authentication.html) diff --git a/docs/setup/deployment/virtual_machine.md b/docs/setup/deployment/virtual_machine.md index 44afeaeed6a..6ddd07c24c1 100644 --- a/docs/setup/deployment/virtual_machine.md +++ b/docs/setup/deployment/virtual_machine.md @@ -1,7 +1,7 @@ --- layout: page title: "Apache Zeppelin on Vagrant Virtual Machine" -description: "Apache Zeppelin provides a script for running a virtual machine for development through Vagrant. The script will create a virtual machine with core dependencies pre-installed, required for developing Apache Zeppelin." +description: "The Vagrant developer environment under scripts/vagrant/zeppelin-dev is deprecated and unmaintained. Build Apache Zeppelin from source instead." group: setup/deployment --- {% include JB/setup %} -# Apache Zeppelin on Vagrant Virtual Machine +# Apache Zeppelin on Vagrant Virtual Machine (deprecated)
    -## Overview +## Deprecation notice -Apache Zeppelin distribution includes a script directory `scripts/vagrant/zeppelin-dev` +**Deprecated as of 0.13.0.** The Vagrant environment in +`scripts/vagrant/zeppelin-dev` is no longer maintained and is not expected to +provision a usable Zeppelin build environment. See +[ZEPPELIN-6460](https://issues.apache.org/jira/browse/ZEPPELIN-6460). -This script creates a virtual machine that launches a repeatable, known set of core dependencies required for developing Zeppelin. It can also be used to run an existing Zeppelin build if you don't plan to build from source. -For PySpark users, this script includes several helpful [Python Libraries](#python-extras). +Apache Zeppelin ships a script directory `scripts/vagrant/zeppelin-dev`, holding +a Vagrant machine definition and the Ansible roles that provision it with the +dependencies once required for developing Zeppelin. -### Prerequisites +To build Zeppelin, follow +[How to Build Zeppelin from source](../basics/how_to_build.html) instead. A local +checkout needs only Git and a JDK; `./mvnw` supplies Maven, and each web module +downloads its own Node.js and npm. -This script requires three applications, [Ansible](https://www.ansible.com/ "Ansible"), [Vagrant](http://www.vagrantup.com "Vagrant") and [Virtual Box](https://www.virtualbox.org/ "Virtual Box"). All of these applications are freely available as Open Source projects and extremely easy to set up on most operating systems. +## What the VM provisions -## Create a Zeppelin Ready VM - -If you are running Windows and don't yet have python installed, [install Python 2.7.x](https://www.python.org/downloads/release/python-2710/) first. +On top of the Ubuntu 16.04 box, the Ansible roles install: -1. Download and Install Vagrant: [Vagrant Downloads](http://www.vagrantup.com/downloads.html) -2. Install Ansible: [Ansible Python pip install](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#pip-install) + - openjdk-8-jdk + - Maven 3.3.9 + - Node.js and npm from the distribution packages + - ruby + rake, make and bundler (only required if building the jekyll documentation) + - git, curl and unzip + - libfontconfig, to avoid PhantomJS missing dependency issues + - Python addons: pip, matplotlib, scipy, numpy, pandas - ```bash - sudo easy_install pip - sudo pip install ansible - ansible --version - ``` - After then, please check whether it reports **ansible version 1.9.2 or higher**. +## Why it is deprecated + +The toolchain provisioned here has not been updated since 2018, and the +provisioning now fails for several independent reasons: + +* The `ubuntu/xenial64` box is Ubuntu 16.04, which is past end of life. +* `ansible-roles.yml` installs `python-minimal` and `python-simplejson`, and the + `python-addons` role installs `python-pip`, `python-matplotlib`, + `python-scipy`, `python-numpy` and `python-pandas`. These are Python 2 + packages that no longer exist on supported Ubuntu releases, and current + `ansible-core` requires Python 3 on the managed node. +* The `maven` role resolves Maven 3.3.9 through `closer.cgi`. That request still + succeeds, but the mirror it returns answers 404: Maven 3.3.9 has been moved off + the distribution mirrors and is only on `archive.apache.org`. +* The `common` role installs `libfontconfig` for PhantomJS, which the project no + longer uses. +* The toolchain it provisions is far below the project baseline: OpenJDK 8 + instead of 11, Maven 3.3.9 instead of 3.6.3, and the distribution `nodejs` + package on Xenial, which is Node.js 4.2.6. + +## Current project baseline + +These are the versions the build actually expects. They are defined in the build +itself, not in the Vagrant scripts. + + + + + + + + + + + + + + + + + + + + + + +
    ComponentVersionSource of truth
    OpenJDK or Oracle JDK11java.version in the root pom.xml
    Maven3.6.3 or highermaven.version in the root pom.xml
    Node.js / npm22.21.1 / 10.9.4node.version / npm.version in zeppelin-web-angular/pom.xml
    + +Only the JDK has to be installed by hand. `./mvnw` downloads Maven, and +`frontend-maven-plugin` downloads the pinned Node.js and npm into each web +module, so neither has to be on `PATH`. Building the classic UI with +`-Pweb-classic` pulls in `zeppelin-web`, which pins its own pair in +`zeppelin-web/pom.xml`. -3. Install Virtual Box: [Virtual Box Downloads](https://www.virtualbox.org/ "Virtual Box") -4. Type `vagrant up` from within the `/scripts/vagrant/zeppelin-dev` directory +## Create a Zeppelin Ready VM -Thats it ! You can now run `vagrant ssh` and this will place you into the guest machines terminal prompt. +This setup requires [Vagrant](https://developer.hashicorp.com/vagrant/install), +[VirtualBox](https://www.virtualbox.org/) and +[Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). +With all three installed, run `vagrant up` from within the +`scripts/vagrant/zeppelin-dev` directory, then `vagrant ssh` to get a shell on +the guest machine. -If you don't wish to build Zeppelin from scratch, run the z-manager installer script while running in the guest VM: +If you don't wish to build Zeppelin from scratch, run the z-manager installer +script while running in the guest VM: ```bash curl -fsSL https://raw.githubusercontent.com/NFLabs/z-manager/master/zeppelin-installer.sh | bash ``` +## Building Zeppelin in the VM -## Building Zeppelin - -You can now +Clone the project over HTTPS, on your host machine or directly in the VM: ```bash -git clone git://git.apache.org/zeppelin.git +git clone https://github.com/apache/zeppelin.git ``` -into a directory on your host machine, or directly in your virtual machine. - -Cloning Zeppelin into the `/scripts/vagrant/zeppelin-dev` directory from the host, will allow the directory to be shared between your host and the guest machine. - -Cloning the project again may seem counter intuitive, since this script likely originated from the project repository. Consider copying just the vagrant/zeppelin-dev script from the Zeppelin project as a stand alone directory, then once again clone the specific branch you wish to build. - -Synced folders enable Vagrant to sync a folder on the host machine to the guest machine, allowing you to continue working on your project's files on your host machine, but use the resources in the guest machine to compile or run your project. _[(1) Synced Folder Description from Vagrant Up](https://docs.vagrantup.com/v2/synced-folders/index.html)_ - -By default, Vagrant will share your project directory (the directory with the Vagrantfile) to `/vagrant`. Which means you should be able to build within the guest machine after you -`cd /vagrant/zeppelin` - - -## What's in this VM? - -Running the following commands in the guest machine should display these expected versions: - -* `node --version` should report *v0.12.7* - -The virtual machine consists of: - - - Ubuntu Server 14.04 LTS - - Node.js 0.12.7 - - npm 2.11.3 - - ruby 1.9.3 + rake, make and bundler (only required if building jekyll documentation) - - Maven 3.3.9 - - Git - - Unzip - - libfontconfig to avoid phatomJs missing dependency issues - - openjdk-7-jdk - - Python addons: pip, matplotlib, scipy, numpy, pandas - -## How to build & run Zeppelin +Cloning the project again may seem counter intuitive, since this script +originated from the project repository. Consider copying just the +`vagrant/zeppelin-dev` script from the Zeppelin project as a stand alone +directory, then once again clone the specific branch you wish to build. -This assumes you've already cloned the project either on the host machine in the zeppelin-dev directory (to be shared with the guest machine) or cloned directly into a directory while running inside the guest machine. The following build steps will also include Python support via PySpark: +Cloning Zeppelin into the `scripts/vagrant/zeppelin-dev` directory from the host +will allow the directory to be shared between your host and the guest machine. +By default, Vagrant shares the directory holding the `Vagrantfile` to `/vagrant` +in the guest, so the checkout is reachable at `/vagrant/zeppelin`. +_[(1) Synced Folder Description from Vagrant Up](https://docs.vagrantup.com/v2/synced-folders/index.html)_ ```bash -cd /zeppelin -./mvnw clean package -Pspark-1.6 -Phadoop-2.4 -DskipTests +cd /vagrant/zeppelin +./mvnw clean package -DskipTests ./bin/zeppelin-daemon.sh start ``` -On your host machine browse to `http://localhost:8080/` +On your host machine browse to `http://localhost:8080/`. -If you [turned off port forwarding](#tweaking-the-virtual-machine) in the `Vagrantfile` browse to `http://192.168.51.52:8080` +If you [turned off port forwarding](#tweaking-the-virtual-machine) in the +`Vagrantfile`, browse to `http://192.168.51.52:8080` instead. +See [Build profiles](../basics/how_to_build.html#build-profiles) for the Spark, +Flink and Hadoop profiles this project currently supports. ## Tweaking the Virtual Machine -If you plan to run this virtual machine along side other Vagrant images, you may wish to bind the virtual machine to a specific IP address, and not use port forwarding from your local host. +If you plan to run this virtual machine alongside other Vagrant images, you may +wish to bind the virtual machine to a specific IP address instead of forwarding +ports from your local host. -Comment out the `forward_port` line, and uncomment the `private_network` line in Vagrantfile. The subnet that works best for your local network will vary so adjust `192.168.*.*` accordingly. +Comment out the `forwarded_port` lines, and uncomment the `private_network` line +in the `Vagrantfile`. The subnet that works best for your local network will +vary, so adjust `192.168.*.*` accordingly. ``` #config.vm.network "forwarded_port", guest: 8080, host: 8080 config.vm.network "private_network", ip: "192.168.51.52" ``` -`vagrant halt` followed by `vagrant up` will restart the guest machine bound to the IP address of `192.168.51.52`. -This approach usually is typically required if running other virtual machines that discover each other directly by IP address, such as Spark Masters and Slaves as well as Cassandra Nodes, Elasticsearch Nodes, and other Spark data sources. You may wish to launch nodes in virtual machines with IP addresses in a subnet that works for your local network, such as: 192.168.51.53, 192.168.51.54, 192.168.51.53, etc.. - -## Extras -### Python Extras - -With Zeppelin running, **Numpy**, **SciPy**, **Pandas** and **Matplotlib** will be available. Create a pyspark notebook, and try the below code. - -```python -%pyspark - -import numpy -import scipy -import pandas -import matplotlib - -print "numpy " + numpy.__version__ -print "scipy " + scipy.__version__ -print "pandas " + pandas.__version__ -print "matplotlib " + matplotlib.__version__ -``` - -To Test plotting using Matplotlib into a rendered `%html` SVG image, try - -```python -%pyspark - -import matplotlib -matplotlib.use('Agg') # turn off interactive charting so this works for server side SVG rendering -import matplotlib.pyplot as plt -import numpy as np -import StringIO - -# clear out any previous plots on this note -plt.clf() - -def show(p): - img = StringIO.StringIO() - p.savefig(img, format='svg') - img.seek(0) - print "%html
    " + img.buf + "
    " - -# Example data -people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') -y_pos = np.arange(len(people)) -performance = 3 + 10 * np.random.rand(len(people)) -error = np.random.rand(len(people)) - -plt.barh(y_pos, performance, xerr=error, align='center', alpha=0.4) -plt.yticks(y_pos, people) -plt.xlabel('Performance') -plt.title('How fast do you want to go today?') - -show(plt) -``` +`vagrant halt` followed by `vagrant up` will restart the guest machine bound to +`192.168.51.52`. This is typically required when running other virtual machines +that discover each other directly by IP address. diff --git a/scripts/vagrant/zeppelin-dev/README.md b/scripts/vagrant/zeppelin-dev/README.md index cc19c416b90..8a52f084561 100644 --- a/scripts/vagrant/zeppelin-dev/README.md +++ b/scripts/vagrant/zeppelin-dev/README.md @@ -11,152 +11,132 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> -## Vagrant Virtual Machine for Apache Zeppelin - -This script creates a virtual machine that launches a repeatable, known set of core dependencies required for developing Zeppelin. It can also be used to run an existing Zeppelin build if you don't plan to build from source. -For PySpark users, this script includes several helpful [Python Libraries](#python-extras). +## Vagrant Virtual Machine for Apache Zeppelin (deprecated) -#### Installing the required components to launch a virtual machine. +> **Deprecated as of 0.13.0.** This Vagrant environment is no longer maintained +> and is not expected to provision a usable Zeppelin build environment. +> See [ZEPPELIN-6460](https://issues.apache.org/jira/browse/ZEPPELIN-6460). -This script requires three applications, [Ansible](http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip "Ansible"), [Vagrant](http://www.vagrantup.com "Vagrant") and [Virtual Box](https://www.virtualbox.org/ "Virtual Box"). All of these applications are freely available as Open Source projects and extremely easy to set up on most operating systems. +This directory holds a Vagrant machine definition and the Ansible roles that +provision it with the dependencies once required for developing Zeppelin. -### Create a Zeppelin Ready VM in 4 Steps (5 on Windows) +To build Zeppelin, follow +[How to Build Zeppelin from source](../../../docs/setup/basics/how_to_build.md) +instead. A local checkout needs only Git and a JDK; `./mvnw` supplies Maven, and +each web module downloads its own Node.js and npm. -* If you are running Windows and don't yet have python installed, install Python 2.7.x* [Python Windows Installer](https://www.python.org/downloads/release/python-2710/) +### What the VM provisions -1. Download and Install Vagrant: [Vagrant Downloads](http://www.vagrantup.com/downloads) -2. Install Ansible: [Ansible Python pip install](http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip) -`sudo easy_install pip` then -`sudo pip install ansible` -`ansible --version` should now report version 1.9.2 or higher -3. Install Virtual Box: [Virtual Box Downloads](https://www.virtualbox.org/ "Virtual Box") -4. Type `vagrant up` from within the `/scripts/vagrant/zeppelin-dev` directory +On top of the Ubuntu 16.04 box, the Ansible roles install: -That's it! - -You can now run `vagrant ssh` and this will place you into the guest machines terminal prompt. + - openjdk-8-jdk + - Maven 3.3.9 + - Node.js and npm from the distribution packages + - ruby + rake, make and bundler (only required if building the jekyll documentation) + - git, curl and unzip + - libfontconfig, to avoid PhantomJS missing dependency issues + - Python addons: pip, matplotlib, scipy, numpy, pandas -If you don't wish to build Zeppelin from scratch, run the z-manager installer script while running in the guest VM: +### Why it is deprecated + +The toolchain provisioned here has not been updated since 2018, and the +provisioning now fails for several independent reasons: + +* The `ubuntu/xenial64` box is Ubuntu 16.04, which is past end of life. +* `ansible-roles.yml` installs `python-minimal` and `python-simplejson`, and the + `python-addons` role installs `python-pip`, `python-matplotlib`, `python-scipy`, + `python-numpy` and `python-pandas`. These are Python 2 packages that no longer + exist on supported Ubuntu releases, and current `ansible-core` requires Python 3 + on the managed node. +* The `maven` role resolves Maven 3.3.9 through `closer.cgi`. That request still + succeeds, but the mirror it returns answers 404: Maven 3.3.9 has been moved off + the distribution mirrors and is only on `archive.apache.org`. +* The `common` role installs `libfontconfig` for PhantomJS, which the project no + longer uses. +* The toolchain it provisions is far below the project baseline (see below): + OpenJDK 8 instead of 11, Maven 3.3.9 instead of 3.6.3, and the distribution + `nodejs` package on Xenial, which is Node.js 4.2.6. + +### Current project baseline + +These are the versions the build expects. They are defined in the build itself, +not here. + +| Component | Version | Source of truth | +| --- | --- | --- | +| OpenJDK / Oracle JDK | 11 | `java.version` in the root `pom.xml` | +| Maven | 3.6.3 or higher | `maven.version` in the root `pom.xml` | +| Node.js / npm | 22.21.1 / 10.9.4 | `node.version` / `npm.version` in `zeppelin-web-angular/pom.xml` | + +Only the JDK has to be installed by hand. `./mvnw` downloads Maven, and +`frontend-maven-plugin` downloads the pinned Node.js and npm into each web +module, so neither has to be on `PATH`. Building the classic UI with +`-Pweb-classic` pulls in `zeppelin-web`, which pins its own pair in +`zeppelin-web/pom.xml`. + +### Create a Zeppelin Ready VM + +This setup requires [Vagrant](https://developer.hashicorp.com/vagrant/install), +[VirtualBox](https://www.virtualbox.org/) and +[Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). +With all three installed, run `vagrant up` from within this directory, then +`vagrant ssh` to get a shell on the guest machine. + +If you don't wish to build Zeppelin from scratch, run the z-manager installer +script while running in the guest VM: ``` curl -fsSL https://raw.githubusercontent.com/NFLabs/z-manager/master/zeppelin-installer.sh | bash ``` - - ### Building Zeppelin -You can now `git clone git://git.apache.org/zeppelin.git` into a directory on your host machine, or directly in your virtual machine. - -Cloning zeppelin into the `/scripts/vagrant/zeppelin-dev` directory from the host, will allow the directory to be shared between your host and the guest machine. - -Cloning the project again may seem counter intuitive, since this script likley originated from the project repository. Consider copying just the vagrant/zeppelin-dev script from the zeppelin project as a stand alone directory, then once again clone the specific branch you wish to build. +Clone the project over HTTPS, on your host machine or directly in the VM: -Synced folders enable Vagrant to sync a folder on the host machine to the guest machine, allowing you to continue working on your project's files on your host machine, but use the resources in the guest machine to compile or run your project. _[(1) Synced Folder Description from Vagrant Up](https://docs.vagrantup.com/v2/synced-folders/index.html)_ - -By default, Vagrant will share your project directory (the directory with the Vagrantfile) to `/vagrant`. Which means you should be able to build within the guest machine after you -`cd /vagrant/zeppelin` - - -### What's in this VM? - -Running the following commands in the guest machine should display these expected versions: - -`node --version` should report *v4.2.6* -`mvn --version` should report *Apache Maven 3.3.9* and *Java version: 1.8.0_171* - - -The virtual machine consists of: +``` +git clone https://github.com/apache/zeppelin.git +``` - - Ubuntu Server 16.04 LTS - - Node.js 4.2.6 - - npm 3.5.2 - - ruby + rake, make and bundler (only required if building jekyll documentation) - - Maven 3.3.9 - - Git - - Unzip - - libfontconfig to avoid phatomJs missing dependency issues - - openjdk-8-jdk - - Python addons: pip, matplotlib, scipy, numpy, pandas - -### How to build & run Zeppelin +Cloning the project again may seem counter intuitive, since this script +originated from the project repository. Consider copying just the +`vagrant/zeppelin-dev` script from the Zeppelin project as a stand alone +directory, then once again clone the specific branch you wish to build. -This assumes you've already cloned the project either on the host machine in the zeppelin-dev directory (to be shared with the guest machine) or cloned directly into a directory while running inside the guest machine. The following build steps will also include Python support via PySpark: +Cloning Zeppelin into the `scripts/vagrant/zeppelin-dev` directory from the host +will allow the directory to be shared between your host and the guest machine. +By default, Vagrant shares the directory holding the `Vagrantfile` to `/vagrant` +in the guest, so the checkout is reachable at `/vagrant/zeppelin`. +_[(1) Synced Folder Description from Vagrant Up](https://docs.vagrantup.com/v2/synced-folders/index.html)_ ``` -cd /zeppelin -mvn clean package -Pspark-1.6 -Phadoop-2.4 -DskipTests +cd /vagrant/zeppelin +./mvnw clean package -DskipTests ./bin/zeppelin-daemon.sh start ``` -On your host machine browse to `http://localhost:8080/` +On your host machine browse to `http://localhost:8080/`. -If you [turned off port forwarding](#tweaking-the-virtual-machine) in the `Vagrantfile` browse to `http://192.168.51.52:8080` +If you [turned off port forwarding](#tweaking-the-virtual-machine) in the +`Vagrantfile`, browse to `http://192.168.51.52:8080` instead. +See [Build profiles](../../../docs/setup/basics/how_to_build.md#build-profiles) +for the Spark, Flink and Hadoop profiles this project currently supports. ### Tweaking the Virtual Machine -If you plan to run this virtual machine along side other Vagrant images, you may wish to bind the virtual machine to a specific IP address, and not use port fowarding from your local host. +If you plan to run this virtual machine alongside other Vagrant images, you may +wish to bind the virtual machine to a specific IP address instead of forwarding +ports from your local host. -Comment out the `forward_port` line, and uncomment the `private_network` line in Vagrantfile. The subnet that works best for your local network will vary so adjust `192.168.*.*` accordingly. +Comment out the `forwarded_port` lines, and uncomment the `private_network` line +in the `Vagrantfile`. The subnet that works best for your local network will +vary, so adjust `192.168.*.*` accordingly. ``` #config.vm.network "forwarded_port", guest: 8080, host: 8080 config.vm.network "private_network", ip: "192.168.51.52" ``` -`vagrant halt` followed by `vagrant up` will restart the guest machine bound to the IP address of `192.168.51.52`. -This approach usually is typically required if running other virtual machines that discover each other directly by IP address, such as Spark Masters and Slaves as well as Cassandra Nodes, Elasticsearch Nodes, and other Spark data sources. You may wish to launch nodes in virtual machines with IP Addresses in a subnet that works for your local network, such as: 192.168.51.53, 192.168.51.54, 192.168.51.53, etc.. - - -### Python Extras - -With zeppelin running, Numpy, SciPy, Pandas and Matplotlib will be available. Create a pyspark notebook, and try - -``` -%pyspark - -import numpy -import scipy -import pandas -import matplotlib - -print "numpy " + numpy.__version__ -print "scipy " + scipy.__version__ -print "pandas " + pandas.__version__ -print "matplotlib " + matplotlib.__version__ -``` - -To Test plotting using matplotlib into a rendered %html SVG image, try - -``` -%pyspark - -import matplotlib -matplotlib.use('Agg') # turn off interactive charting so this works for server side SVG rendering -import matplotlib.pyplot as plt -import numpy as np -import StringIO - -# clear out any previous plots on this note -plt.clf() - -def show(p): - img = StringIO.StringIO() - p.savefig(img, format='svg') - img.seek(0) - print "%html
    " + img.buf + "
    " - -# Example data -people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') -y_pos = np.arange(len(people)) -performance = 3 + 10 * np.random.rand(len(people)) -error = np.random.rand(len(people)) - -plt.barh(y_pos, performance, xerr=error, align='center', alpha=0.4) -plt.yticks(y_pos, people) -plt.xlabel('Performance') -plt.title('How fast do you want to go today?') - -show(plt) -``` +`vagrant halt` followed by `vagrant up` will restart the guest machine bound to +`192.168.51.52`. This is typically required when running other virtual machines +that discover each other directly by IP address. diff --git a/scripts/vagrant/zeppelin-dev/Vagrantfile b/scripts/vagrant/zeppelin-dev/Vagrantfile index 8c1ed76da13..c57f7a086fb 100644 --- a/scripts/vagrant/zeppelin-dev/Vagrantfile +++ b/scripts/vagrant/zeppelin-dev/Vagrantfile @@ -16,6 +16,11 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +# DEPRECATED: this Vagrant environment is no longer maintained and is not +# expected to provision a usable Zeppelin build environment. See README.md +# in this directory and https://issues.apache.org/jira/browse/ZEPPELIN-6460 +# To build Zeppelin, follow docs/setup/basics/how_to_build.md instead. + # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" diff --git a/scripts/vagrant/zeppelin-dev/show-instructions.sh b/scripts/vagrant/zeppelin-dev/show-instructions.sh index 4ddeb5c1bd7..6faf0eb3242 100644 --- a/scripts/vagrant/zeppelin-dev/show-instructions.sh +++ b/scripts/vagrant/zeppelin-dev/show-instructions.sh @@ -14,11 +14,22 @@ # See the License for the specific language governing permissions and # limitations under the License. +echo '############################################################' +echo '# DEPRECATED: this Vagrant environment is no longer maintained' +echo '# and is not expected to provision a usable build environment.' +echo '# See scripts/vagrant/zeppelin-dev/README.md and' +echo '# https://issues.apache.org/jira/browse/ZEPPELIN-6460' +echo '#' +echo '# To build Zeppelin, follow docs/setup/basics/how_to_build.md.' +echo '# It needs only Git and JDK 11: ./mvnw supplies Maven, and the' +echo '# frontend build downloads its own Node.js and npm.' +echo '############################################################' +echo echo '# Post vagrant up instructions.' echo '# From your host machine,' echo '# git clone the zeppelin branch into this directory' echo -echo 'git clone git://git.apache.org/zeppelin.git' +echo 'git clone https://github.com/apache/zeppelin.git' echo echo '# Cloning the project again may seem counter intuitive, since this script' echo '# originated from the project repository. Consider copying just the vagrant/zeppelin-dev' @@ -30,12 +41,10 @@ echo echo '# then when running inside the VM' echo echo 'cd /vagrant/zeppelin' -echo 'mvn clean package -DskipTests' -echo -echo '# or for a specific Spark/Hadoop build with additional options such as python support' -echo -echo 'mvn clean package -Pspark-1.6 -Phadoop-2.4 -DskipTests' +echo './mvnw clean package -DskipTests' echo './bin/zeppelin-daemon.sh start' echo +echo '# See docs/setup/basics/how_to_build.md for the Spark, Flink and Hadoop' +echo '# build profiles this project currently supports.' +echo echo 'On your host machine browse to http://localhost:8080/' - From 4eefb7952cd9b4097cedbd74aec31fb9689be5bb Mon Sep 17 00:00:00 2001 From: kimyenac Date: Tue, 22 Sep 2026 13:31:40 +0900 Subject: [PATCH 2/3] [MINOR] Fix the git:// clone pointer in the YARN install docs The link text advertised git://git.apache.org/zeppelin.git while the href already pointed at GitHub. The git protocol is no longer served, so a reader copying that text gets a connection refused. --- docs/setup/deployment/yarn_install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/deployment/yarn_install.md b/docs/setup/deployment/yarn_install.md index 58cf90d6ccf..d3b022262ea 100644 --- a/docs/setup/deployment/yarn_install.md +++ b/docs/setup/deployment/yarn_install.md @@ -75,7 +75,7 @@ This document assumes Spark 1.6.0 is installed at /usr/lib/spark. #### Zeppelin -Checkout source code from [git://git.apache.org/zeppelin.git](https://github.com/apache/zeppelin.git) or download binary package from [Download page](https://zeppelin.apache.org/download.html). +Checkout source code from [https://github.com/apache/zeppelin.git](https://github.com/apache/zeppelin.git) or download binary package from [Download page](https://zeppelin.apache.org/download.html). You can refer [Install](../../quickstart/install.html) page for the details. This document assumes that Zeppelin is located under `/home/zeppelin/zeppelin`. From 6ff7fac17c0358b9972a331e4e6e17a6835501de Mon Sep 17 00:00:00 2001 From: kimyenac Date: Tue, 22 Sep 2026 13:38:28 +0900 Subject: [PATCH 3/3] [MINOR] Fix the clone commands in the contribution guides The git access sections told contributors to clone over git://, which gitbox no longer serves: `git clone git://gitbox.apache.org/repos/asf/zeppelin.git` fails with a connection refused. The surrounding prose already names the https URL as the official location, so switch the commands to match it. The branch example was broken for a second reason: branch-0.11.0 does not exist on gitbox, so `git clone -b branch-0.11.0` would fail even over https. The release line is branch-0.11. --- docs/development/contribution/how_to_contribute_code.md | 6 +++--- docs/development/contribution/how_to_contribute_website.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/development/contribution/how_to_contribute_code.md b/docs/development/contribution/how_to_contribute_code.md index 1464c339b35..7adc7966223 100644 --- a/docs/development/contribution/how_to_contribute_code.md +++ b/docs/development/contribution/how_to_contribute_code.md @@ -51,13 +51,13 @@ First of all, you need Zeppelin source code. The official location of Zeppelin i Get the source code on your development machine using git. ```bash -git clone git://gitbox.apache.org/repos/asf/zeppelin.git zeppelin +git clone https://gitbox.apache.org/repos/asf/zeppelin.git zeppelin ``` -You may also want to develop against a specific branch. For example, for branch-0.11.0 +You may also want to develop against a specific branch. For example, for branch-0.11 ```bash -git clone -b branch-0.11.0 git://gitbox.apache.org/repos/asf/zeppelin.git zeppelin +git clone -b branch-0.11 https://gitbox.apache.org/repos/asf/zeppelin.git zeppelin ``` Apache Zeppelin follows [Fork & Pull](https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request) as a source control workflow. diff --git a/docs/development/contribution/how_to_contribute_website.md b/docs/development/contribution/how_to_contribute_website.md index ca6b0e72339..250d8c08e11 100644 --- a/docs/development/contribution/how_to_contribute_website.md +++ b/docs/development/contribution/how_to_contribute_website.md @@ -40,7 +40,7 @@ First of all, you need the website source code. The official location of mirror Get the source code on your development machine using git. ```bash -git clone git://gitbox.apache.org/repos/asf/zeppelin.git +git clone https://gitbox.apache.org/repos/asf/zeppelin.git cd docs ``` Apache Zeppelin follows [Fork & Pull](https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request) as a source control workflow.