过去,Apache Spark UI 在帮助用户调试应用程序方面发挥了重要作用。在最新的 Spark 1.4 版本中,我们很高兴地宣布数据可视化浪潮已经进入 Spark UI。此版本中新增的可视化功能包括三个主要组件:

  • Spark 事件的时间线视图
  • 执行 DAG
  • Spark Streaming 统计数据的可视化

这篇博文将是由两部分组成的系列文章中的第一篇。这篇文章将涵盖前两个组成部分,并将最后一个部分保存到下一周的后续文章中。

Spark 事件的时间线视图

自 Spark 的早期版本以来,Spark 事件一直是面向用户的 API 的一部分。在最新版本中,Spark UI 在时间线中显示这些事件,以便事件的相对顺序和交错一目了然。

时间线视图可在三个级别使用:跨所有作业、一项作业内和一个阶段内。在登录页面上,时间线显示应用程序中所有作业的所有 Spark 事件。考虑以下示例:

这里的事件顺序相当简单。在所有executors注册后不久,应用程序并行运行 4 个作业,其中一个失败而其余的成功。然后,当所有作业完成且应用程序退出时,executors将随之删除。现在让我们点击其中一项工作。

此作业对 3 个文件运行字数统计,并在最后合并结果。从时间线来看,很明显 3 个字数统计阶段并行运行,因为它们不相互依赖。但是,最后的合并确实取决于前 3 个阶段的结果,因此相应的阶段(最后的收集)直到所有前面的阶段都完成后才会开始。让我们进一步了解其中一个阶段。

此阶段有 20 个分区(未显示所有分区),分布在 4 台机器上。每个条形代表阶段内的单个任务。从这个时间线视图中,我们可以收集到关于这个阶段的几个见解。首先,分区在机器上分布得相当好。其次,大部分任务执行时间包括原始计算,而不是网络或 I/O 开销,这并不奇怪,因为我们混洗的数据非常少。第三,如果我们为 executor 分配更多的内核,可以提高并行度;目前看来,每个 executor 一次最多只能执行两个任务。

我想借此机会展示 Spark 中使用此时间线的另一个功能:动态分配。此功能允许 Spark 根据工作负载动态扩展执行程序的数量,以便更有效地共享集群资源。让我们通过时间线来看看它的实际效果。

首先要注意的是,应用程序在工作过程中获取executors,而不是提前保留他们。然后,在第一个作业完成后不久,用于该作业的一组executors变为空闲并返回到集群。这允许在同一集群中运行的其他应用程序同时使用我们的资源,从而提高集群利用率。只有当一个新作业进来时,我们的 Spark 应用程序才会获取一组新的执行器来运行它。

在时间轴中查看 Spark 事件的能力对于识别应用程序中的瓶颈非常有用。调试应用程序的下一步是将特定任务或阶段映射到产生它的 Spark 操作。

执行 DAG

最新 Spark 版本的第二个可视化添加显示每个作业的执行 DAG。在 Spark 中,作业与以有向无环图 (DAG) 组织的一系列RDD依赖项相关联,如下所示:


此作业执行简单的字数统计。首先,它执行textFile操作读取 HDFS 中的输入文件,然后执行flatMap操作将每一行拆分为单词,然后执行map操作以形成 (word, 1) 对,最后执行reduceByKey操作以求和每个行的计数单词。

可视化中的蓝色阴影框表示用户在其代码中调用的 Spark 操作。这些框中的点代表在相应操作中创建的 RDD。操作本身按它们运行的​​阶段分组。

可以从这个可视化中获得一些观察结果。首先,它揭示了未通过 shuffle 分隔的流水线操作的 Spark 优化。特别是,每个执行器从 HDFS 读取输入分区后,直接将后续的flatMap和map函数应用于同一任务中的分区,无需触发另一个阶段。

其次,其中一个 RDD 被缓存在第一阶段(由绿色突出显示)。由于封闭操作涉及从 HDFS 读取,因此缓存此 RDD 意味着此 RDD 上的未来计算可以至少从内存访问到源文件的一个子集而不是从 HDFS。

DAG 可视化的价值在复杂的工作中最为明显。例如,MLlib 中的交替最小二乘法 (ALS) 实现迭代计算两个因子矩阵的近似乘积。这涉及到一系列的map、join、groupByKey操作。

值得注意的是,在 ALS 中,在正确位置缓存对性能至关重要,因为该算法在每次迭代中广泛重用先前计算的结果。通过 DAG 可视化,用户和开发人员现在可以一目了然地确定某些 RDD 是否正确缓存,如果没有,可以快速了解为什么实现缓慢。

与时间线视图一样,DAG 可视化允许用户单击进入舞台并扩展舞台内的细节。下面描述了 ALS 中单个阶段的 DAG 可视化。

在stage视图中,属于这个stage的所有RDD的详细信息都会自动展开。用户现在可以快速找到有关特定 RDD 的信息,而无需通过将鼠标悬停在作业页面上的各个点上来进行猜测和检查。

最后,我想强调 DAG 可视化和 Spark SQL 之间的初步集成。由于 Spark SQL 用户对高级物理运算符比对低级 Spark 原语更熟悉,因此应该显示前者。结果类似于映射到底层执行 DAG 的 SQL 查询计划。

版本:spark1.4

通过可视化图了解您的 Spark 应用程序相关推荐

  1. 通过可视化来了解你的Spark应用程序

    学长推荐阅读文章,先mark到博客里,原文地址http://www.csdn.net/article/2015-07-08/2825162#rd,所有权力归原作者所有. allowtransparen ...

  2. R语言ggplot2可视化图中添加希腊字母实战

    R语言ggplot2可视化图中添加希腊字母实战 目录 R语言ggplot2可视化图中添加希腊字母实战 #ggplot2可视化图中添加希腊字母1

  3. R语言ggplot2可视化百分比显示实战:纵轴显示为百分比、在柱状图上显示百分比、按照因子变量绘制分组子图(纵轴显示为百分比)、可视化图中显示数据百分比

    R语言ggplot2可视化百分比显示实战:纵轴显示为百分比.在柱状图上显示百分比.按照因子变量绘制分组子图(纵轴显示为百分比).可视化图中显示数据百分比 目录

  4. R语言删除ggplot可视化图中的所有x轴轴标签实战:ggplot可视化默认包含所有x轴轴标签、删除ggplot可视化图中的所有x轴轴标签实战

    R语言删除ggplot可视化图中的所有x轴轴标签实战:ggplot可视化默认包含所有x轴轴标签.删除ggplot可视化图中的所有x轴轴标签实战 目录

  5. 5 种 非传统 的可视化图,也是用Python画的

    作者丨Liana Mehrabyan 来源丨TowardsDataScience 编译丨机器之心   参与丨Panda 数据可以帮助我们描述这个世界.阐释自己的想法和展示自己的成果,但如果只有单调乏味 ...

  6. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  7. 数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!...

    继在<要做好深度学习任务,不妨先在损失函数上「做好文章」>一文中为大家深入浅出地介绍了损失函数的相关知识后,Deep Learning Demystified 编辑.数据科学家 Harsh ...

  8. 如何使用旅程可视化工具:简化网站和应用程序上的客户旅程图

    为什么要使用旅程可视化工具? 随着网站和应用程序在客户体验中扮演更重要的角色,规划和改善在线客户旅程变得至关重要.事实上,93% 的领先客户体验组织认为基于旅程的方法是重中之重.旅程可视化使采用基于旅 ...

  9. ML之shap:分析基于shap库生成的力图、鸟瞰图、散点图等可视化图的坐标与内容详解之详细攻略

    ML之shap:分析基于shap库生成的力图.鸟瞰图.散点图等可视化图的坐标与内容详解之详细攻略 目录 一.力图可视化 1.单个样本力图可视化

最新文章

  1. 5.JasperReports学习笔记5-其它数据生成动态的报表(WEB)
  2. PCB走线拐弯处锯齿显示与平滑显示
  3. 如何下载百度文库的资料?
  4. 别研究买房了,墓地你研究过吗?
  5. 那份让我想死的化工原理补考试卷
  6. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)
  7. Go基础编程:环境搭建
  8. 70条程序员编程的专业名言,你认可几条?
  9. some fragments
  10. LeetCode 2016. 增量元素之间的最大差值
  11. vue中使用base64和md5
  12. 以写代学:python shutil模块
  13. 推荐一个在Windows下可以查看文件夹大小的工具TreeSize Free
  14. 应用计算机测线性电阻伏安特性曲线,伏安特性曲线
  15. java文件上传像素限制,JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
  16. 学习笔记整理:Photoshop软件应用-基础-图像选择
  17. Please make sure the -vm option in eclipse.ini is pointing to a JDK and verify that Installed JRE’s
  18. k8s集群搭建(亲测有效)
  19. 阿里云ECS服务器安装Nginx
  20. 大神自述|7岁接触建模的大神建模师,分享建模经验与技巧

热门文章

  1. 计算机网络技术与网络信息安全,计算机网络技术与网络安全精讲.ppt
  2. 香蕉打卡总是显示服务器,香蕉打卡是什么软件?为什么那么火?
  3. W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
  4. 状态机按键消抖电路设计
  5. endnote转化成纯文本后_EndNote转换成BibTeX格式
  6. 瑞萨RL78\G13编译出现Segment ‘@@CODEL‘ can‘t allocate to memory
  7. usbserial驱动 带感叹号_USB2.0-CRW驱动显示黄色叹号如何解决图文教程
  8. JAVAWEB仿华为商城网页源码
  9. Peppermint将基于云的开源桌面引入非洲
  10. inotify+rsync实时同步 彻底告别同步慢