0
点赞
收藏
分享

微信扫一扫

第03章-处理数据基础模型

目录

第03章 处理数据基础模型 2

3.1 Spark UI介绍 2

3.1.1 Jobs选项卡 2

3.1.2 Stages选项卡 3

3.1.3 Environment选项卡 4

3.1.4 SQL / DataFrame选项卡 4

3.2 map阶段 5

3.3 reduce阶段 6

3.4 commit阶段 6

第03章 处理数据基础模型

Spark SQL处理数据基础模型简介

我们要想写出性能很好的Spark SQL,那么我们必须掌握Spark SQL是如何处理数据的。虽然Spark SQL处理数据是非常复杂的,不过我们也能从中归纳出一种简单通用模型,那就是map阶段—>reduce阶段—>commit阶段。

3.1 Spark UI介绍

我们经常基于Spark UI上的指标进行性能分析,因此我们对Spark页面进行一个介绍。

3.1.1 Jobs选项卡

Jobs页面能看见当前Spark的版本,job提交时间、job执行时间,运行的个数,总个数等指标。此页面,一般关注不多

第03章-处理数据基础模型_数据

3.1.2 Stages选项卡

第03章-处理数据基础模型_选项卡_02

这个页面,我们可以观察到这个stage耗时duration指标,以及成功了多少个,共有多少个,以及input size、output size、shuffle read size、shuffle write size等。我们可以关注到哪个stage有性能问题。

Stages页面是非常重要的页面,需要重点查看这个页面的指标。

第03章-处理数据基础模型_SQL_03

我们通过点击Stage可以查看这个stage的所有tasks具体执行情况。我们主要关注Summary Metrics,查看Max和Min,是否差距特别大。我们还可以对Status等指标进行排序,倒序和正序都可以。还可以查看logs观察详细的log日志。Duration指标也非常重要,帮助我们寻找慢task。Shuffle Read size和Shuffle write Szie等都很重要。这些指标能帮助我们分析大部分sql的性能问题。我们也主要是通过这个页面观察

第03章-处理数据基础模型_SQL_04

3.1.3 Environment选项卡

主要是查看我们设置的一些Spark变量是否生效

第03章-处理数据基础模型_SQL_05

3.1.4 SQL / DataFrame选项卡

这个页面能查看我们执行的具体sql,也能根据链接进去查看这个sql执行计划。

第03章-处理数据基础模型_选项卡_06

第03章-处理数据基础模型_数据_07

我们可以根据上一个stage和下一个stage之间number of output rows分析膨胀率,以及我们还能在这里观察到,我们sql的执行计划,从而观察到广播是否生效。

膨胀率:膨胀率是我们分析Spark SQL性能问题一个非常重要的指标。Stage1 output rows是100万条,而Stage2 output rows是1亿条,那么膨胀率就是100。膨胀率很高,那么就可能产生性能问题,我们就需要分析原因。

3.2 map阶段

Map阶段Spark按照hdfs的block切分,通过多个map任务并行读取hdfs上的数据。如果input有值,shuffle read为空,那么这个stage属于map阶段。

第03章-处理数据基础模型_数据_08

我们可以简单归纳出在stage中Input或output有值,那么是map阶段,shuffle read或shuffle write有值,那么是reduce阶段。所有stage结束后,那么是commit阶段。

备注:

正在运行的yarn地址: http://xx:8088/proxy/${appid}

已经结束的spark history地址: http://xx:18081/history/${appid}

URL每个公司不一样

3.3 reduce阶段

Map阶段从hdfs上把数据读取到spark中,map通过hash函数对reduce key进行计算,并且对reduce取模,得到该条数据应该去哪一个reduce。如果shuffle read有值,那么这个stage处于reduce阶段。

产生reduce阶段的sql处理逻辑一般有:join 、partition by 、group by、distinct、order by。

Hash函数相同的key会进入同一个reduce。

第03章-处理数据基础模型_SQL_09

3.4 commit阶段

Commit阶段就是将上一个阶段处理后的数据,从临时目录移动到hive表的正式目录。一般耗时很短暂。所有stage运行完成,那么就会进入commit阶段。

来自视频:《Spark SQL性能优化》

链接地址:

https://edu.51cto.com/course/34516.html


举报

相关推荐

0 条评论