The current fair sharing algorithm performs fair sharing between frameworks within a role. This is equivalent to having the framework id behave as a pseudo-role beneath the role. Consider the case where there are two spark frameworks running within the same "spark" role. This behaves similarly to hierarchical roles with the framework ID acting as an implicit role:
Unfortunately, the frameworks cannot change their weight to be a value other than 1 (see MESOS-6247) and they cannot set quota.
With the addition of hierarchical roles (see MESOS-6375) we can eliminate the notion of the framework ID acting as a pseudo-role in favor of explicitly using hierarchical roles. E.g.
Here if two frameworks run within the eng/analytics role, then they will compete for resources without fair sharing. However, if resource guarantees are required, sub-roles can be created explicitly, e.g. eng/analytics/learning and eng/analytics/reports. These roles can be given weights and quota.