-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
Description
Impetus
Metafora's current peer-based work stealing approach has limitations:
- In a cluster with nodes A and B, each with 10 tasks, if you start node C, any tasks released (due to the fair balancer) from A or B, are just as likely to be claimed by A or B as C! The
CanClaimmethod alone offers very few tools to mitigate this. - Starting a cluster is extremely resource intensive as each node often tries to claim every task.
New Scheduling
- Use something similar to the current work-stealing scheduling to elect a scheduling leader. Have that leader assign or offer tasks to followers.
- Task metadata used for scheduling decisions (affinities, anti-affinities, dependencies, resource utilization) could be declarative definitions or a tasks could implement a function that given an
Offerdetermines whether or not it's sufficient for the task to run. (assignment vs. ask/offer)
Open Questions
- How simple and extensible can we keep metafora and still address scheduler scaling issues?
- What metadata and constraints are valuable for scheduling decisions?
Topologies
- Metafora doesn't have them currently. Period.
- Super complicated stuff, especially if you want to generically handle inter-task communication.
Open Questions
- Leave topologies up to another library/layer?
- Treat topologies as scheduling metadata and leave inter-task communication up to users?
These are my personal preferences as I'd rather not try to compete with existing one-size-fits-all topology frameworks like Storm. -- @schmichael