一、Spark Shuffle

对于 spark shuffle 这一过程,网络上有非常多的文章进行说明,这里简单描述介绍下。

Spark 包含三种 shuffle writer,上图展示的是 BypassMergeSortShuffleWriter (有兴趣的用户可以自行阅读社区源码),以此为例简单介绍 spark shuffle。

Shuffle Writer 会将每个 shuffle write task 的数据,按照一定的规则进行划分,比如说 hash(具体什么规则是通过 rdd 之间的 transform 进行设定的,也可以用户自行设定 rdd 的 Partitioner),并对应的写到临时文件中。在所有数据写完之后,会将这些临时文件合并成一个文件,并生成 index 文件用于索引每个 reduce task 数据所对应的部分。

当所有的 shuffle write task 完成后,会进入到 shuffle read stage,并启动 shuffle read task。

shuffle read task,会读取之前所有 shuffle write task 所产生的 shuffle 数据中对应为自己的某一部分。如上图右边所示,每个 task 内的数据来源与左边的 task 颜色一致。

(为了简单理解,可能部分并不准确,准确的理解可以直接查看社区源码)

二、RSS 是什么

spark shuffle 的问题

上面简单介绍完之后,我们可以发现,对于一次 shuffle read,需要读取前面 m 个 shuffle write task 所产生的对应自己的那一部分,所以一个 shuffle read task 需要读取 m 个 task,如果一次 shuffle read 包含 r 个 task,那么就需要读取 m * r 个 block。

我们假设一次 shuffle 的数据量是 100 GB,m 和 r 都是 1000,那么平均来说,一个 block 的大小是 100 GB / (1000 * 1000) = 104 kb。总共需要 100w 次网络请求,每次需要读取 104 kb。

这个会带来大量的随机读,随机读小块数据,也会带来极低的 shuffle read 性能,更糟糕的是,如果 shuffle read 性能过低,很有可能触发 FetchFailedException,从而导致 shuffle write task 的重算,进一步增大了 shuffle 的时长。

简单介绍 RSS

remote shuffle service 是一个只负责写不负责读的 shuffle service,京东自主开发。但市面上也会有其它类型的 shuffle service,比如 Facebook 所做的 Cosco,Linkedkin 做的 Magnet,Uber 做的 Zeus。

简单来说,我们把上面所述的 spark shuffle 过程进行改写:

shuffle write 的时候,我们会直接写到 remote shuffle service 上而不落盘;相同的 reduce partition 会被写到相同的 shuffle service 上,以此进行一个聚合,并写到 hdfs 上的文件中。

shuffle read 的时候,会直接读取 hdfs。

通过 hdfs 上的 shuffle 数据备份,以此来消除 FetchFailedException 的产生,避免 shuffle write task 的重算,也避免了小块数据的频繁读取。

spark中RSS工具简介相关推荐

  1. Qt中rcc工具简介

    Qt 自带的开发工具集里有专门的 rcc 工具,用于将 *.qrc 里面描述的图片.文档等编译成对应的源代码文件 qrc_*.cpp 或者独立的二进制资源文件 *.rcc.下面介绍 rcc 工具的两种 ...

  2. Linux 中的 netcat 网络工具简介

    Linux 中的 netcat 网络工具简介 Apr 3, 2020 |  Linux |  linux netcat netcat 是 Linux 系统中的网络工具,其通过 TCP 和 UDP 协议 ...

  3. 在 Apache Spark 中利用 HyperLogLog 函数实现高级分析

    在 Apache Spark 中利用 HyperLogLog 函数实现高级分析 预聚合是高性能分析中的常用技术,例如,每小时100亿条的网站访问数据可以通过对常用的查询纬度进行聚合,被降低到1000万 ...

  4. HttpWatch工具简介及使用技巧

    joan 私は张で QQ:774199038 HttpWatch工具简介及使用技巧(转载) 一 概述: HttpWatch强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网 ...

  5. java开源工具简介(2)

    java开源工具简介(2) OpenCms [Java开源 CMS系统] OpenCms是一个J2EE的产品,它是用Java写成的.它和Tomcat捆绑在一起.但是也能够使用ATG Dynamo.We ...

  6. 《python 与数据挖掘 》一 1.2 工具简介

    本节书摘来自华章出版社<python 与数据挖掘 >一书中的第1章,第1.2节,作者张良均 杨海宏 何子健 杨 征,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  7. 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )

    文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...

  8. 【音频处理】Melodyne 选择工具使用 ( 主工具简介 | 修改音高 | 自动吸附 | 音符长度修改 | 长度自动吸附 | 设置音符分离线 | 设置片段分离线 )

    文章目录 一.主工具简介 二.选择工具 | 修改音高 三.自动吸附 四.修改音符长度 五.修改音符长度自动吸附 六.音符分离线设置 七.设置片段分离线 一.主工具简介 主工具 是 主工具栏 中的 66 ...

  9. Algorithm:机械优化设计的数学模型简介、常用优化方法、优化计算工具简介之详细攻略

    Algorithm:机械优化设计的数学模型简介.常用优化方法.优化计算工具简介之详细攻略 目录 机械设计中基于算法模型的机械优化设计 1.优化设计的数学模型

最新文章

  1. springboot打包不同环境配置与shell脚本部署
  2. 程序员最害怕的5件事,你中招了吗?
  3. jax-ws cxf_走向REST:在Spring和JAX-RS(Apache CXF)中嵌入Jetty
  4. camera.swf java_java调用摄像头保存图片上传功能
  5. 卡方分布分位数_卡方检验和精确概率法及两两比较
  6. java基础—自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存(java集合三)
  7. 6月21日武汉见!华为nova 5正式官宣:麒麟980+40W快充
  8. Android 开发高效工具之道
  9. 为什么有的锂电保护板需要激活之锂电池保护板怎么激活
  10. 编写函数,基于期中成绩和期末成绩,按指定权重(默认0.3和0.7)计算总分。
  11. 网络嗅探器 java_网络嗅探软件的设计与分析
  12. idea报错 No valid Maven installation found.maven不能用
  13. php7 error reporting,php中的error_reporting(7)的含义
  14. Expert C Programming 阅读笔记(CH2)
  15. LBS 是什么服务?
  16. 用户体验报告——石墨文档
  17. oracle 8i 启动,如何快速启动oracle 8i SQL-Plus?
  18. 如何更改计算机c盘中用户名,windows10家庭版怎么更改c盘中的用户名_win10家庭版修改c盘用户名操作方法...
  19. 宜信笔试题 把m升水倒入n个杯子
  20. 微信小程序-弹窗提示

热门文章

  1. iPhone 小技巧/实用功能
  2. NP问题,P问题,NPC问题详解—黄宇老师《算法分析》笔记
  3. 银盒子智慧餐厅硬件尺寸规格推荐机型
  4. amcharts示例
  5. 减法器运算电路公式推导
  6. 手把手教你搭建免流服务器(只限于联通)
  7. 移动、电信光猫超级管理员密码
  8. 周易六十四卦——风雷益卦
  9. 手机打电话的通讯原理
  10. 嵌入式单片机基础篇(二十三)之串口通信