通过可视化更好的了解你的Spark应用

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 图的最大价值是它会推动我们去注意到那些我们从未预料到的东西。 – John Tukey Spark 1.4中对Spark UI进行改进,更加突出可视化的效果。我们来看一下他的主要的改动,主要包含三个方面: Spark事件的时间线视图 执行的DAG图 Spark Streaming 的可视化

图的最大价值是它会推动我们去注意到那些我们从未预料到的东西。
– John Tukey

Spark 1.4中对Spark UI进行改进,更加突出可视化的效果。我们来看一下他的主要的改动,主要包含三个方面:

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

这一篇主要会将前面的2块,最后的一块请见下一篇

Spark事件的时间线视图

从早前的版本开始Spark events就已经是Spark API的一部分了。在最新的版本里面,Spark UI会在时间线上显示这些events,让events的相对的顺序和交织能够一目了然。

时间线视图在三个层次上有效:所有的job,单个job以及单个stage
在默认展示页上,时间线显示一个应用中包含所有作业的Spark events。见下图

Screen_Shot_2015_06_19_at_1_55_07_PM_1024x481
events的顺序在这里是非常简单的。在所有的executors都注册上来以后,应用并行运行了4个job,其中一个失败了其他的都成功了。然后,当所有的job都完成以后,应用退出了。executors也都被移除了。让我们点击其中一个job

Screen_Shot_2015_06_19_at_1_56_30_PM_1024x426
此作业运行word count统计3个文件,并在最后join结果。从时间轴看,很显然,3个word count并行运行,因为它们不依赖于对方。然而,最后的join依赖于3个stage的结果,并因此需要等待3个stage结束才能开始。让我们进一步看看里面的一个阶段。

Screen_Shot_2015_06_19_at_1_57_36_PM_1024x823

这个stage有20个partition(不是全部显示)传播横跨4台机器。每个条代表stage的单个任务。从这个时间视图,我们可以得到有关这个stage的几点启示。首先,整个机器的partition分布相当不错。其次,大多数的task执行时间是大于网络或I / O的开销,因为我们shuffle的数据非常少。第三,我们可以通过分配给executor更多的core来提高并行的程度;目前看来,每个执行器可同时执行不超过两个任务。

我想借此机会展示在Spark中使用时间视图的另一个特点:动态分配。该特征允许Spark基于负载动态的缩放executor的数量,这样集群资源得到更有效的共享。让我们来看看时间视图上的表现。

Screen_Shot_2015_06_19_at_1_59_30_PM_1024x424

首先要注意的是,应用在job过程中获得executors,而不是提前保留它们。然后,在第一个job结束后不久,用于该作业的executors变为空闲并返回到集群中去。这就允许同一集群中运行的其他应用在其间来使用他们,从而增加群集利用率。只有当一个新的job进来的时候,我们的Spark应用程序才需要全新的一组executors来运行它。

能够通过时间线视图来查看Spark events对确定应用程序中的瓶颈非常有用。接着下一步就能够把一个特定的task或者stage映射到Spark操作上去,找到原因。

执行的DAG图

第二个增加到Spark中的可视化是每一个job的执行的DAG。在Spark中,job与一个组织在有向无环图(DAG)中的RDD的链关联在一起, 看起来像下面这样:
Screen_Shot_2015_06_19_at_2_00_59_PM

这是一个简单的word count job。首先,它执行了一个textFile的操作来读取在HDFS上的输入文件,然后flatMap操作会split每一行成为独立的单词,然后把他们映射成(word,1)这样的pair,最后使用reduceByKey操作来对word的数量求和。

蓝色框指的是用户在他/她的代码调用Spark操作。在这些框里的点代表对应操作下创建的RDDs。该操作本身是由它们所在的stage来划分的。

从这个可视化中我们能有所发现。首先,它的Spark的流水线优化并不是由shuffle阶段来分割的。尤其是,从HDFS读取输入partition后,每个执行程序直接在task中执行flatMap和map,避免了与其他的stage产生影响。

其次,RDDs其中之一被缓存在第一个stage(绿色高亮)。由于操作包括了从HDFS读,缓存了这个RDD意味着将来在此RDD关联计算的时候可以从存储器而不是从HDFS来快速的访问这部分原始文件的子集。

DAG可视化的复杂的job上会有最明显的价值。举个例子,在MLlib的交替最小二乘(ALS)执行计算两个因子矩阵迭代的近似结果。这涉及到一系列的map,join,groupByKey等操作。

Screen_Shot_2015_06_19_at_2_02_25_PM_1024x727
值得注意的是,在ALS ,在正确的地方缓存对于性能来说至关重要,因为该算法重用在每个迭代中前一次计算的结果。随着DAG可视化,用户和开发人员现在可以一眼找出RDDs是否正确缓存,如果没有,也很快明白为什么一个实现的速度很缓慢。

和时间线视图一样,DAG允许用户点击进入一个stage并展开其内部的详细信息。见下图。

Screen_Shot_2015_06_19_at_2_03_21_PM_553x1024

在stage视图,所有属于此阶段的RDDs的细节会自动展开。现在用户可以快速找到具体的RDDs信息而不必用鼠标在上面悬停来获取信息寻找要的点。

最后,我想强调一下DAG可视化和 SparkSQL之间的一个初步的集成。对比更接近物理实体层面的Spark操作,Spark SQL用户显然更熟悉一些高级操作,因此一些高级操作更需要被可视化。其结果类似将一个SQL查询计划映射到底层执行的DAG。

Screen_Shot_2015_06_19_at_2_04_05_PM_1024x879

Spark Streaming的可视化部分也在1.4中集成了,不过会在另一个独立的介绍中放出。

在不久的将来,Spark UI会理解更高级别的库的语义,从而提供更多相关的细节。Spark SQL将会有自己独立的标签。而Spark core,当你鼠标悬停在RDD上的时候一些额外的信息类似partition的数量,调用点,缓存百分比都会在DAG上展示。

原文出处
https://databricks.com/blog/2015/06/22/understanding-your-spark-application-through-visualization.html

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
2月前
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
290 1
|
7月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
664 0
|
7月前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
267 0
|
SQL 分布式计算 Java
Spark入门指南:从基础概念到实践应用全解析
在这个数据驱动的时代,信息的处理和分析变得越来越重要。而在众多的大数据处理框架中, Apache Spark 以其独特的优势脱颖而出。
165 0
|
分布式计算 安全 Java
SPARK 应用如何快速应对 LOG4J 的系列安全漏洞
SPARK 应用如何快速应对 LOG4J 的系列安全漏洞
|
7月前
|
机器学习/深度学习 SQL 分布式计算
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
|
4月前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
4月前
|
分布式计算 资源调度 测试技术
“Spark Streaming异常处理秘籍:揭秘如何驯服实时数据流的猛兽,守护你的应用稳如泰山,不容错过!”
【8月更文挑战第7天】Spark Streaming 是 Apache Spark 中的关键组件,用于实时数据流处理。部署时可能遭遇数据问题、资源限制或逻辑错误等异常。合理处理这些异常对于保持应用稳定性至关重要。基础在于理解其异常处理机制,通过 DSC 将数据流切分为 RDD。对于数据异常,可采用 try-catch 结构捕获并处理;资源层面异常需优化 Spark 配置,如调整内存分配;逻辑异常则需加强单元测试及集成测试。结合监控工具,可全面提升应用的健壮性和可靠性。
86 3
|
5月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
164 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
4月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
73 0