[SPARK-2648] through shuffling blocksByAddress avoid much reducers to fetch data from a executor at a time

like mapreduce we need to shuffle blocksByAddress.it can avoid many reducers to connect a executor at a time.when a map has many paritions, at a time there has so much reduces connecting to this map.so it maybe make network's connect to timeout.
Also - can you do this just went `blocksByAddress` is created instead of doing it here?