<p>What are the Advantages and Disadvantages of Two Level Scheduler (like in Apache Mesos) vs Single Level Scheduler (like in Kubernetes) ? And how they would perform on small and large clusters for variety of work loads that normally take place in build, test, deploying stateless, stateful &amp; Big data applications?</p>

<p>Full disclosure: I work for Mesosphere :) </p>

<p>One advantage of two-level schedulers is that they can manage different workloads in different ways. </p>

<p>Some workloads require access to special resources only available on certain nodes (external storage for example). Some workloads might run best on special resources but could use other types(TensorFlow should run on GPUs, but can run on CPUs in a pinch). Some workloads can be rescheduled anywhere if they node they are running on dies (Spark). In addition to variation in the resources they need, workloads also have different installation, scaling, backup, and upgrade processes. This is especially complicated for multi-node applications that need different configurations depending on their lifecycle stage. </p>

<p>Two-level scheduling lets you define different rules for each workload while running them all on a common pool of resources, which can keep your resource utilization high. </p>

<p>I think that <a href="https://mesosphere.com/wp-content/uploads/2017/09/Apache_Mesos_Diagram_Kubernetes.jpg" rel="noreferrer">this diagram</a> from <a href="https://mesosphere.com/blog/application-aware-scheduling-mesos/" rel="noreferrer">this blog post</a> illustrates two-level scheduling pretty well.</p>
