这章节主要延续的(三)中的shuffle模块提供的shuffle read。
在spark 中,shuffle read是提供给shuffle的后继用来读取shuffle数据的。当需要读取远程数据的时候,
1.每次只会开最多5个线程进行读取
2.每次请求的数量不会超过maxmbinflight,默认是45M/5,这样的好处是,限制数据的读取量,当一个节成为了网络拥塞节点后,在它上面读取数据的任务都会排队,如果任务的数据量大,那么,这个读取任务时间延迟会很高,导致后面排队任务等待时间过长。平均考虑,每个任务读取的数据量不应该过大。
在featch的时候是将要在某台机器上面读取的数据在边生成featch任务的时候边统计数据量,当统计的数据量到达了可以一次featch的时候,就开始创建一次的featch任务,最后再统一的下发featch任务。从另外一个角度,也就是说同一个address的featch实际上如果小于阈值,是会组合到一起的。