您当前的位置: 首页 >  ar

段智华

暂无认证

  • 0浏览

    0关注

    1232博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第27课:彻底解密Spark Shuffle令人费解的6大经典问题(课程内容全球独家)

段智华 发布时间:2017-05-04 20:57:59 ,浏览量:0

第27课:彻底解密Spark Shuffle令人费解的6大经典问题(课程内容全球独家)

 

Shuffle的第一大问题:什么时候进行shuffle的fetch操作?Shuffle具体在什么时候开始运行(是在一边Mapper的map操作同时进行

reduce端的shuffle的reduce操作吗)? 错误的观点:Spark是一遍Mapper一遍Shuffle,而Hadoop的MapReduce是先完成Mapper然后才进行Reducer的shuffle。 事实是:Spark一定是先完成Mapper端所有的Tasks,才会进行Reducer端的shuffle过程。 原因:Spark的job是按照stage线性执行的,前面的stage必须执行完才能够执行后面的Reducer的shuffle过程。 补充说明:Spark的shuffle是边拉取数据边进行Aggregate操作的。其实与Hadoop MapReduce相比起优势确实在速度上。但是也会导致一 些算法不好实现,例如求平均值等。(但是spark提供了一些内置函数)

Shuffle的第二大问题:shuffle fetch过来的数据到底放到了哪里?

抓过来的数据首先肯定是放在reducer端的内存缓冲区中的,spark曾经有版本要求只能放在内存缓存中,数据结构类似于HashMap (AppendOnlyMap),显然特别消耗内存和极易出现OOM,同时也从reducer端极大的限制了spark集群的规模,现在的实现都是内存+磁盘 的方式(数据结构使用ExternalAppendOnlyMap),当然大家也可以通过s

关注
打赏
1659361485
查看更多评论
立即登录/注册

微信扫码登录

0.0504s