<p>I see Mesosphere building all kinds of applications on the Mesos Framework like Hadoop, Kubernetes, etc. but since there is the Marathon applications for long-running services, why not just use that? E.g. why not setup Kubernetes nodes on a bunch of Marathon services? Why implement Kubernetes directly on Framework API? Because scheduling is more efficient that way? Same question goes for Jenkins implementation, why not just run Jenkins master/slaves on top of Marathon...</p>

<p><a href="http://mesos.apache.org/" rel="noreferrer">Apache Mesos</a> is a <a href="http://en.wikipedia.org/wiki/Two-level_scheduling" rel="noreferrer">2-level scheduler</a>.  The purpose of a framework is to provide the intelligence of high-level scheduling.  <a href="https://mesosphere.github.io/marathon/" rel="noreferrer">Marathon</a> provides the ability to schedule a task in the cluster, queue that task for scheduling and re-queue tasks that have failed.  It is great at keeping long running processes running.  It is like the <code>init</code> of the datacenter.   As such, it is commonly used to make sure other frameworks are up and running such as <a href="https://github.com/mesosphere/kubernetes-mesos" rel="noreferrer">Kubernetes-Mesos</a> or <a href="https://github.com/jenkinsci/mesos-plugin" rel="noreferrer">Jenkins</a>.    </p>

<p>There are many applications for which this level of scheduling is insufficient.  Marathon can and often is used for running things like <a href="http://kafka.apache.org/" rel="noreferrer"> Apache Kafka</a>, however this often falls short in many failure modes.  Additionally, Marathon doesn't care if task runs multiple times on the same node, however running multiple Kafka nodes on the same slave is a bad idea.     Using Hadoop as another example (since you referred it), HDFS has several types of nodes that need to be managed; NameNode, DataNode and JournalNode.   Marathon does not know the order to start these in, or if these can be co-located on the same node or not.  It doesn't know how to scale this application.  The HDFS framework manages that intelligence.   </p>

<p>As far as scheduling efficiency, I'm not sure that is the goal.  Apache Mesos is a 2-level scheduler for a reason.   It is a highly efficient 2-level scheduler.   The value of 2-level scheduling is to abstract the type of concerns I described above to a higher-level scheduler (which is termed by Mesos as frameworks).   Marathon is still a great way to schedule and ensure high availability to other frameworks.</p>
