Install Apache Hop
Apache Hop has no installer and no server to set up: you download it, unzip it and start it.
This guide covers the desktop installation first, then the other ways to run Hop: the
command-line tools, Hop Server, the apache/hop Docker image and Hop Web.
| You want to | Use | Section |
|---|---|---|
| Design and test pipelines and workflows on your own machine | Hop GUI | Install Hop GUI |
| Run pipelines and workflows from scripts, schedulers or CI/CD | hop-run | Command-line tools |
| Run work remotely on a central server | Hop Server | Run Hop Server |
| Run pipelines and workflows in containers or on Kubernetes | apache/hop image | Run Hop in Docker |
| Give a team a browser-based Hop GUI without local installs | apache/hop-web image | Run Hop Web |
Putki is built on Apache Hop, and installing it works exactly the same way. Putki provides its own images with security patches applied; those are described in the Putki section.
Before you start: Java 21
Hop needs a Java runtime, and the official version is Java 21. Check what you have:
java -version
The output should report version 21. If the command is not found, or reports an older version, install a Java 21 runtime first. Oracle Java, Microsoft's OpenJDK builds and OpenJDK work well; the Hop team keeps a list of supported and unsupported runtimes.
Install Hop GUI on your desktop
Hop runs on Windows, Linux (x86_64 and ARM) and macOS.
-
Download the client zip from the Apache Hop downloads page.
-
Unzip it to a folder of your choice. That folder is your Hop installation: it holds the launcher scripts, the
config/folder and theplugins/folder. -
Keep your configuration outside the installation folder (see the next section). Do this once, before you create your first project.
-
Start Hop GUI:
- Windows
- Linux / macOS
hop-gui.bat./hop-gui.shThe first start takes a little longer than the ones after it, because Hop scans and registers its plugins.
Keep your configuration outside the installation
By default Hop stores its configuration, including the list of your projects and environments,
in the config/ folder inside the installation. An upgrade is a fresh unzip, so that
configuration would stay behind in the old folder. Point Hop at a configuration folder of your
own instead.
Hop 2.20 and later set this up for you. Run the following once and restart Hop, or use Tools → Configure Hop environment… in Hop GUI:
- Windows
- Linux / macOS
hop.bat setup apply --defaults
./hop setup apply --defaults
This sets HOP_CONFIG_FOLDER and HOP_AUDIT_FOLDER to folders in your user profile. See
Hop setup for what it changes and
how to undo it.
Earlier versions: set the HOP_CONFIG_FOLDER environment variable yourself, to a folder
outside the installation.
- Windows
- Linux / macOS
Search for Environment Variables in the Start menu, open Edit the system environment
variables, and add a user variable named HOP_CONFIG_FOLDER with a folder such as
C:\hop-config as its value. Start a new command prompt so the variable is picked up.
Add this line to your shell startup file (~/.zshrc or ~/.bashrc; echo $SHELL tells you
which shell you use), then open a new terminal:
export HOP_CONFIG_FOLDER="$HOME/hop-config"
If the folder is new, copy the contents of the installation's config/ folder into it first, so
your existing projects and settings come along.
The command-line tools
The same folder holds the command-line tools. On Windows they end in .bat, on Linux and macOS
in .sh:
| Script | What it does |
|---|---|
hop-run | Runs a pipeline or workflow without the GUI: from a script, a scheduler or a CI/CD job |
hop-conf | Creates and manages projects, environments and configuration |
hop-server | Starts Hop Server |
hop-search | Searches the metadata in a project |
hop-encrypt | Encrypts passwords for use in metadata and configuration files |
hop-import | Converts Pentaho/Kettle jobs and transformations to Apache Hop |
For example, to run a workflow in the project my-hop-project with the local run
configuration:
- Windows
- Linux / macOS
hop-run.bat -j my-hop-project -f C:\path\to\my-hop-project\flights-processing.hwf -r local
./hop-run.sh -j my-hop-project -f /path/to/my-hop-project/flights-processing.hwf -r local
-j selects the project, -f the file to run and -r the run configuration. See
hop-run and
hop-conf in the Apache
Hop manual for every option.
Run Hop Server
Hop Server runs pipelines and workflows sent to it by Hop GUI, hop-run or its REST API. Start it
from the installation folder with the address and port to listen on:
- Windows
- Linux / macOS
hop-server.bat 0.0.0.0 8080
./hop-server.sh 0.0.0.0 8080
Its status page is then available at http://<server>:8080. The default username and password
are both cluster: change them before the server is reachable by anyone else. For production,
Hop Server usually runs in the apache/hop Docker image instead (see the next section). See
Hop Server for configuration files,
SSL and the REST API.
Run Hop in Docker
The apache/hop image runs in two modes:
- Short-lived: runs one pipeline or workflow and stops. This is how most production deployments run Hop, from a scheduler or as a Kubernetes job.
- Long-lived: when you don't tell it which file to run, it starts Hop Server and waits for work.
To run a workflow from a project on your machine, mount the project folder and tell the container which project, file and run configuration to use:
docker run -it --rm \
--env HOP_LOG_LEVEL=Basic \
--env HOP_PROJECT_FOLDER=/files \
--env HOP_PROJECT_NAME=my-hop-project \
--env HOP_FILE_PATH='${PROJECT_HOME}/flights-processing.hwf' \
--env HOP_RUN_CONFIG=local \
-v /path/to/my-hop-project:/files \
apache/hop:latest
The container creates the project from HOP_PROJECT_FOLDER and HOP_PROJECT_NAME, runs the file
in HOP_FILE_PATH with the run configuration in HOP_RUN_CONFIG, prints the log and exits. Use
a specific version tag instead of latest in production, so a new release never changes what
runs without you deciding to.
The image reads more variables, for environments, parent projects and extra JDBC drivers among others. See Hop in Docker for the full list.
Run Hop Web
Hop Web is the same Hop GUI, running in a browser. It is useful for shared development
environments, or when installing Hop on every laptop is not an option. Start it with the
apache/hop-web image:
docker run -p 8080:8080 apache/hop-web:latest
Then open http://localhost:8080/ui.
Hop Web is a long-lived application where people save their work, so project files and Hop configuration must live on a mounted folder or volume, not only inside the container. See Hop Web in Docker for which folders to persist, and Hop Web for adding users and passwords.
Upgrade to a new version
- Desktop: download and unzip the new version next to the old one. If your configuration lives
outside the installation (see above), the
new version picks up your projects and environments straight away. Hop GUI may open the
defaultproject first; select your own project from the project list. - Docker: pull the new image tag and replace the container. Keep projects and configuration on mounted folders, never only inside the container, so nothing is lost when it is replaced.
Next steps
- Your first Apache Hop project: build a project with two pipelines and a workflow, and run it from Hop GUI, the command line and Docker.
- Apache Hop components: which tool to use for which task.
- Run pipelines and workflows and check logs and execution information.
- Prefer a structured course? Putki Academy: Apache Hop installation and setup is free and self-paced.
- New to Apache Hop? Read What is Apache Hop: the complete guide: what it is, how it compares to other ETL tools, and how Putki runs it in production.