The DAGScheduler group tasks in a single stage as a TaskSet.
Then the TaskSet is submitted to TaskSchedulerImpl, one implementation of TaskScheduler. [TaskScheduler] manages multiple TaskSet, and TaskSetManager manages tasks within a TaskSet.
The final task actions are done by SchedulerBackend.