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

本文涉及的产品
EMR Serverless Spark 免费试用,1000 CU*H 有效期3个月
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 的使用方法。
eric-li
+关注
目录
打赏
0
0
0
1
164
分享
相关文章
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
716 1
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
1217 0
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
331 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
272 15
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,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)
270 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
“Spark Streaming异常处理秘籍:揭秘如何驯服实时数据流的猛兽,守护你的应用稳如泰山,不容错过!”
【8月更文挑战第7天】Spark Streaming 是 Apache Spark 中的关键组件,用于实时数据流处理。部署时可能遭遇数据问题、资源限制或逻辑错误等异常。合理处理这些异常对于保持应用稳定性至关重要。基础在于理解其异常处理机制,通过 DSC 将数据流切分为 RDD。对于数据异常,可采用 try-catch 结构捕获并处理;资源层面异常需优化 Spark 配置,如调整内存分配;逻辑异常则需加强单元测试及集成测试。结合监控工具,可全面提升应用的健壮性和可靠性。
166 3

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问