Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
A simple Mesos "Hello World": downloads and starts a Python web server on every node in the cluster.
name := "ScalaMesos"
version := "1.0"
scalaVersion := "2.10.3"
resolvers += "Mesosphere Repo" at ""
libraryDependencies ++= Seq(
"org.apache.mesos" % "mesos" % "0.14.2",
"mesosphere" % "mesos-utils" % "0.0.6"
import mesosphere.mesos.util.FrameworkInfo
import org.apache.mesos.MesosSchedulerDriver
* @author Tobi Knaup
object Main extends App {
val framework = FrameworkInfo("ScalaMesos")
val scheduler = new ScalaScheduler
val driver = new MesosSchedulerDriver(scheduler, framework.toProto, "zk://localhost:2181/mesos")
import java.util
import mesosphere.mesos.util.ScalarResource
import org.apache.mesos.Protos._
import org.apache.mesos.{SchedulerDriver, Scheduler}
import scala.collection.JavaConverters._
* @author Tobi Knaup
class ScalaScheduler extends Scheduler {
def error(driver: SchedulerDriver, message: String) {}
def executorLost(driver: SchedulerDriver, executorId: ExecutorID, slaveId: SlaveID, status: Int) {}
def slaveLost(driver: SchedulerDriver, slaveId: SlaveID) {}
def disconnected(driver: SchedulerDriver) {}
def frameworkMessage(driver: SchedulerDriver, executorId: ExecutorID, slaveId: SlaveID, data: Array[Byte]) {}
def statusUpdate(driver: SchedulerDriver, status: TaskStatus) {
println(s"received status update $status")
def offerRescinded(driver: SchedulerDriver, offerId: OfferID) {}
def resourceOffers(driver: SchedulerDriver, offers: util.List[Offer]) {
for (offer <- offers.asScala) {
println(s"offer $offer")
val cmd = CommandInfo.newBuilder
val cpus = ScalarResource("cpus", 1.0)
val id = "task" + System.currentTimeMillis()
val task = TaskInfo.newBuilder
driver.launchTasks(offer.getId, List(task).asJava)
def reregistered(driver: SchedulerDriver, masterInfo: MasterInfo) {}
def registered(driver: SchedulerDriver, frameworkId: FrameworkID, masterInfo: MasterInfo) {}

This is the code from my live coding session at the SF Scala meetup. Just drop these files into a dir and sbt run, assuming you have local Mesos cluster and Zookeeper. Otherwise change the zk://localhost:2181/mesos to point to Mesos.


got an error, no mesos in java.library.path.
where did i go wrong?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.