Apache Mesos - Windows

Windows

Mesos 1.0.0 introduced experimental support for Windows.

Building Mesos

System Requirements

  1. Install the latest Visual Studio 2017: The “Community” edition is sufficient (and free of charge). During installation, choose the “Desktop development with C++” workload.

  2. Install CMake 3.8.0 or later. During installation, choose to “Add CMake to the system PATH for all users”.

  3. Install GNU patch for Windows.

  4. If building from source, install Git.

  5. Make sure there are no spaces in your build directory. For example, C:/Program Files (x86)/mesos is an invalid build directory.

  6. If developing Mesos, install Python 3 (not Python 2), in order to use our support/python3 scripts ( e.g. to post and apply patches, or lint source code).

Build Instructions

Following are the instructions for Windows 10.

# Clone (or extract) Mesos.
git clone https://gitbox.apache.org/repos/asf/mesos.git
cd mesos

# Configure using CMake for an out-of-tree build.
mkdir build
cd build
cmake .. -G "Visual Studio 15 2017 Win64" -T "host=x64" -DENABLE_LIBWINIO=ON

# Build Mesos.
# To build just the Mesos agent, add `--target mesos-agent`.
cmake --build .

# The Windows agent exposes new isolators that must be used as with
# the `--isolation` flag. To get started point the agent to a working
# master, using eiher an IP address or zookeeper information.
src\mesos-agent.exe --master=<master> --work_dir=<work folder> --launcher_dir=<repository>\build\src

Running Mesos

If you deploy the executables to another machine, you must also install the Microsoft Visual C++ Redistributable for Visual Studio 2017.

Known Limitations

The current implementation is known to have the following limitations:

Build Configuration Examples

Building with Ninja

Instead of using MSBuild, it is also possible to build Mesos on Windows using Ninja, which can result in significantly faster builds. To use Ninja, you need to download it and ensure ninja.exe is in your PATH.

Note that with Ninja it is imperative to open the correct developer command prompt so that the 64-bit build tools are used, as Ninja does not otherwise know how to find them.

Building with Java

This enables more unit tests, but we do not yet officially produce mesos-master.

When building with Java on Windows, you must add the Maven build tool to your path. The JAVA_HOME environment variable must also be manually set. An installation of the Java SDK can be found form Oracle.

As of this writing, Java 9 is not yet supported, but Java 8 has been tested.

The Java build defaults to OFF because it is slow. To build the Java components on Windows, turn it ON:

mkdir build; cd build
$env:PATH += ";C:\...\apache-maven-3.3.9\bin\"
$env:JAVA_HOME = "C:\Program Files\Java\jdk1.8.0_144"
cmake .. -DENABLE_JAVA=ON -DENABLE_LIBEVENT=ON -G "Visual Studio 15 2017 Win64" -T "host=x64"
cmake --build . --target mesos-java

Note that the mesos-java library does not have to be manually built; as libmesos will link it when Java is enabled.

Unfortunately, on Windows the FindJNI CMake module will populate JAVA_JVM_LIBRARY with the path to the static jvm.lib, but this variable must point to the shared library, jvm.dll, as it is loaded at runtime. Set it correctly like this:

$env:JAVA_JVM_LIBRARY = "C:\Program Files\Java\jdk1.8.0_144\jre\bin\server\jvm.dll"

The library may still fail to load at runtime with the following error:

“The specified module could not be found.”

If this is the case, and the path to jvm.dll is verified to be correct, then the error message actually indicates that the dependencies of jvm.dll could not be found. On Windows, the DLL search path includes the environment variable PATH, so add the bin folder which contains server\jvm.dll to PATH:

$env:PATH += ";C:\Program Files\Java\jdk1.8.0_144\jre\bin"

Building with OpenSSL

When building with OpenSSL on Windows, you must build or install a distribution of OpenSSL for Windows. A commonly chosen distribution is Shining Light Productions’ OpenSSL.

As of this writing, OpenSSL 1.1.x is not yet supported, but 1.0.2M has been tested.

Use -DENABLE_SSL=ON when running CMake to build with OpenSSL.

Warning: This currently requires the use of -DENABLE_LIBEVENT=ON instead of -DENABLE_LIBWINIO=ON; however, the use of libevent on Windows is not recommended, as it is buggy and will be unsupported in the future.

Note that it will link to OpenSSL dynamically, so if the built executables are deployed elsewhere, that machine also needs OpenSSL installed.

Beware that the OpenSSL installation, nor Mesos itself, comes with a certificate bundle, and so it is likely that certificate verification will fail.