title: Does Spark support load balancing in heterogeneous clusters?
body: <p>Has Spark considered that in a heterogeneous cluster (multiple machines have different network bandwidth, memory, cpu, IO, etc. configurations), tasks with different amounts of calculation are submitted to the corresponding nodes.
  Obviously, nodes with excellent computing performance should handle heavier tasks, instead of treating all nodes as isomorphic and abstracting them into cores with the same performance.
  Similarly, there are different types of tasks, such as CPU-bound and I/O bound. Should different types of tasks be handled by nodes with good performance? For example, I/O bound tasks should be processed by nodes with better disks and bandwidth, not CPUs. The CPU-bound task is the opposite.
  Does Spark consider this problem and solve it? If not, I want to optimize this problem as a topic of my graduation thesis. I don't know if it can work.</p>