Bundle Basics
A Peel bundle packages together the configuration data, datasets, and programs required for the execution of a particular set of experiments.
Folder Structure
The top-level elements of a Peel bundle are shortly summarized below.
Default Path | Config Parameter | Fixed | Description |
---|---|---|---|
./apps | app.path.apps |
Yes | Workload applications. |
./config | app.path.config |
Yes | Environment configurations and experiments definitions. |
./datagens | app.path.datagens |
No | Data generators. |
./datasets | app.path.datasets |
No | Static datasets. |
./downloads | app.path.downloads |
No | Archived system binaries. |
./lib | app.path.log |
Yes | Peel libraries and dependencies. |
./log | app.path.log |
Yes | Peel execution logs. |
./results | app.path.results |
No | State and log data from experiment runs. |
./systems | app.path.systems |
No | Contains all running systems. |
./utils | app.path.utils |
No | Utility scripts and files. |
./peel.sh | app.path.cli |
Yes | The Peel command line interface. |
You can customize the default paths of non-fixed paths in your bundle- or host-specific configuration. For more information how to do this, please refer to the Environment Configurations section.
Components
The entries in the above list can be principally grouped as follows.
Peel CLI and Logs
The Peel command line tool. Invoke it without arguments to see the list of supported commands. While running, the Peel CLI spawns and executes OS processes. In the log folder, you will find the stdout
and stderr
output of these processes, as well as a copy of the actual console output produced by Peel itself.
Configurations and Definitions
The config folder contains *.conf files written in HOCON syntax which define the environment configuration, as well as *.xml files with the actual experiments defined as Spring beans.
Workload Applications
The apps folder contains the binaries of the experiment workload applications.
Data Sets and Generators
The datasets folder contains static, fixed-sized datasets required for the experiments. The datagens folder contains programs for dynamic generation of scalable datasets required for the experiments.
Systems
The downloads folder contains system binary archives for the systems in your experiment environment managed by Peel. The system archives are per default extracted in the systems folder.
Results
The results folder contains data collected from attempted successful Peel experiment runs in a hierarchy following a ${suite}/${expName}.run${NN} naming convention.
Utils
The utils folder contains utility scripts (e.g., SQL queries and gnuplot scripts) that can be used next to or in conjunction with Peel CLI commands.
Example
Taking a closer look at the peel-wordcount bundle from the Motivation section, we can see the following project and folder structure.
Bundle Sources
The bundle sources are organized as a multi-module Maven project with the following structure:
# cd "$BUNDLE_SRC" && \
# tree -L 1 --dirsfirst -d peel-wordcount
peel-wordcount # parent module
├── peel-wordcount-bundle # module for bundle assembly
├── peel-wordcount-datagens # module for data generators
├── peel-wordcount-flink-jobs # module for Flink jobs
├── peel-wordcount-peelextensions # module for Peel extensions
└── peel-wordcount-spark-jobs # module for Spark jobs
Assembled Bundle
The assembled bundle for the peel-wordcount
bundle looks as follows:
# cd "$BUNDLE_BIN" && \
# tree -L 2 --dirsfirst peel-wordcount
peel-wordcount
├── apps
│ ├── peel-wordcount-flink-jobs-1.0-SNAPSHOT.jar
│ └── peel-wordcount-spark-jobs-1.0-SNAPSHOT.jar
├── config
├── datagens
│ └── peel-wordcount-datagens-1.0-SNAPSHOT.jar
├── datasets
├── downloads
├── lib
│ ├── ...
│ ├── peel-core-1.0-SNAPSHOT.jar
│ ├── peel-extensions-1.0-SNAPSHOT.jar
│ ├── peel-wordcount-peelextensions-1.0-SNAPSHOT.jar
│ └── ...
├── log
├── results
├── systems
├── utils
├── peel.sh
└── VERSION
Here is how the Maven modules from the bundle sources are mapped to the assembled bundle.
- The apps folder contains the jar artifacts for all
*-jobs
and*-apps
modules. - The datagens folder contains the jar artifacts for all
*-datagens
modules. - The lib folder contains the two common Peel artifacts
peel-core
andpeel-extensions
, as well as the*-peelextensions
artifact where the user can put hers bundle-specific Peel extensions. - The contents of the remaining folders are copied from the corresponding folder located under
peel-wordcount-bundle/src/main/resources
.
Building
To assemble the bundle from the sources with Maven, you have one of four options:
mvn clean package # package in peel-wordcount-bundle
mvn clean package -Pdev # package with soft links
mvn clean deploy # package and copy to $BUNDLE_BIN
mvn clean deploy -Pdev # package and copy with soft links
Running the deploy
phase automatically copies the assembled bundle binaries folder to $BUNDLE_BIN
.
Activating the dev
profile (with -Pdev
) enforces certain folders in the assembled bundle binaries (config, datasets, and utils) to be created as soft links to their corresponding source locations.