参考文章:
1、在mapper将shuffle数据写到本地磁盘,每个mapper会按照下游reducer的个数生成block
2、reducer在fetch环节拉取对应的block
性能问题
每个map生成的shuffle数据在一个文件中,文件分成多个block,每个block是一个下游reducer需要处理的数据,因此在shuffle read的时候,reducer需要读取上游属于自己的block,随机读比较严重。
体现在SPARK任务报错体现在,reducer的数据拉取报失败。
1、shuffle read:在shuffle read阶段,mapper会将shuffle数据不直接罗盘针,而是按照reducer将block推到rss集群内存中。
2、RSS内存将各mapper产生的数据merge起来,存到hdfs中。
3、shuffle write:reducer在shuffle fetch的时候,reducer向Driver发起请求,拿到MapStatus消息,然后找到HDFS上聚合后的数据。
优点: