Deploy Alluxio on Mesos
Note: This legacy scheduler is DEPRECATED and is no longer maintained. Please expect a new scheduler in Alluxio 2.0.
Alluxio can be deployed through Mesos. This allows Mesos to manage the resources used by Alluxio. For the Alluxio master, the managed resources are the CPU and memory needed by the JVM process. For the worker, the additional resources include the ramdisk memory (if configuring memory as a storage tier) and other optional tiered storage such as SSD or HDD.
Mesos version
Alluxio is compatible with Mesos 0.23.0 and later.
Mesos requirements
By default, the Alluxio Master needs ports 19998 and 19999, and the Alluxio Worker needs ports 29998, 29999, and 30000. For Mesos to run Alluxio, you must either make these ports available to the Mesos framework, or change the Alluxio ports.
Making ports available
When you launch the Mesos slave, you can specify the port resources for it to manage.
$ /usr/local/sbin/mesos-slave --resources='ports:[19998-19999,29998-30000]'
Changing Alluxio ports
Alternately, you may specify the Alluxio ports in alluxio-site.properties
:
alluxio.master.rpc.port=31398
alluxio.master.web.port=31399
alluxio.worker.rpc.port=31498
alluxio.worker.web.port=31500
Deploying Alluxio on Mesos
To deploy Alluxio on Mesos, we need to make the Alluxio distribution available to Mesos. There are two ways to do this:
- Install Alluxio on all Mesos nodes.
- Point Mesos to an Alluxio tarball.
Setting configuration properties
See the Configuration Settings documentation for instructions on how to set configuration properties.
Deploy with Alluxio already installed on all Mesos nodes
- Install Alluxio on all Mesos nodes. The remaining steps should be performed from an Alluxio installation
- Set the configuration property
alluxio.integration.mesos.alluxio.jar.url
toLOCAL
- Set the configuration property
alluxio.home
to the path where Alluxio is installed on the Mesos nodes - Launch the Alluxio Mesos framework
$ ${ALLUXIO_HOME}/integration/mesos/bin/alluxio-mesos-start.sh mesosMaster:5050
Deploy with Alluxio tarball URL
From anywhere with Alluxio installed:
- Set the configuration property
alluxio.integration.mesos.alluxio.jar.url
to point to an Alluxio tarball - Launch the Alluxio Mesos framework
$ ${ALLUXIO_HOME}/integration/mesos/bin/alluxio-mesos-start.sh mesosMaster:5050
- Note that the tarball should be compiled with
-Pmesos
. Released Alluxio tarballs from version 1.3.0 onwards are compiled this way. - Mesos library path is assumed to be at
/usr/lib
. If it is not, you can updateMESOS_LIBRARY_PATH
inalluxio-mesos-start.sh
with the correct path.
Verify that the Alluxio Mesos framework is working by starting a Mesos master and confirming that it is detected in alluxio/logs/framework.out
.
- Example from
alluxio/logs/framework.out
I0612 18:08:31.251133 3047 sched.cpp:336] New master detected at master@127.0.0.1:5050
Java
By default, the Alluxio Mesos framework will use whatever version of Java is available on the Mesos executor. Download a Java 8 jdk and use it to run Alluxio by setting the configuration property
alluxio.integration.mesos.jdk.url=JDK_URL
Configuring Alluxio Masters and Workers
When Alluxio is deployed on Mesos, it propagates all Alluxio configuration to the launched masters and workers. This means you can configure the launched Alluxio cluster by setting configuration properties in conf/alluxio-site.properties
.
Log files
The ./integration/mesos/bin/alluxio-mesos-start.sh
script will launch an AlluxioFramework
Java process which will log to alluxio/logs/framework.out
.
Alluxio masters and workers launched on Mesos will write their Alluxio logs to mesos_container/logs/
. There may also be useful information in the mesos_container/stderr
file.