Spark3.x的Cache能不能让我在2022好好睡觉

简介: Spark3.x的Cache能不能让我在2022好好睡觉

前言

一转眼已经是2022年1月9日了,跨年的节点会发生很多系统性的大事,对于普通人来讲就是跨过一个新的公元年2021->2022,对于生产系统来说,尤其是离线系统,需要发生年结,虽然期望平稳度过,但是实际情况总归没那么太平,所以每次到了这种节点,我们都是第一个flag,新的一年,好好睡觉!!

2022我就想好好睡觉

Spark1.X

Spark1.x的时代,大部分工作上解决内存计算模式下动不动就OOM那种让人抓狂的事情,需要半夜爬起来加内存

Spark2.x

Spark2.x版本,尤其是SparkSQL的引入,扩大了使用场景,自动化的执行计划经常是不对的,需要半夜爬起来手工改执行计划

Spark3.x

到了Spark3.x时代,就在当下,只能一些展望吧,小博客可以带来一些改善睡眠带有一些舒适度(吐槽+抓狂+有点小改善)的内容^^

Spark Cache中 Ugly的执行计划带来的抓狂问题(重点批判)

”Cache Table可以把数据放在内存,这段数据在未来使用的时候可以复用,减少IO“,这个是最初吸引很多同学去使用Cache表的骚操作,这个带来一系列抓狂问题:

1、乱用Cache

大部分同学就是直接使用sql,不是很懂得去控制Cache的大小,大量疯狂的大表也往内存里面怼,实际也装不下,反而导致数据溢出到磁盘上面了

2、想当然地以为快而已

我们看到那种问题SQL,下游其实没有所谓的复用,就是存粹的,读取一次Cache一次,然后下游的作业再从内存表中读取一次

3、凌晨资源情况不一样

凌晨起夜的时候,因为平台的资源会整体拉到一个高度,所以到了凌晨的时候没有那么多内存来霍霍,最后白天可以正常执行的就不能执行了

4、没关注真正慢的原因

磁盘读取一次其实也没那么慢,很多任务慢在Shuffle上,cache一次只能是添堵

5、调试带来的困难

一方面,我们作为平台同学来说,是去看人家的任务,逻辑也没那么熟悉,另一方面,Spark2.X的UI

不显示哪个表被读取了

InMemoryTableScan压根看不出啥东西,处理问题起来很痛苦

一些改进的措施

Cache别乱用

我们在很多情况下发现,大部分任务慢发生在Shuffle阶段,当然在Spark3.x中对Shuffe本身也做了很多优化,需要找准瓶颈

平台侧的解读取IO思路

实际发现我们真要做分布式Cache,是直接把数据底层Cache起来,上层并不感知,目前效果比较好的做法是走的Alluxio,我们会把表的localtion改掉,而且也是平台视角去观测读取的热点数据

重复读落地表来得更有效

实际的重复读读,其实是在多任务间的情况读取比较多,而且是发生在跨集群带来的打满带宽问题,集群内部的IO读取很少打爆的,平台的优化策略是在不同的cluster上作replication操作

Spark3.x带来优化Cache Table展示

后记

所以说2022真能好好睡觉么?

目录
相关文章
|
分布式计算 Spark 存储
Spark Relational Cache实现亚秒级响应的交互式分析
阿里云E-MapReduce (EMR) 是构建在阿里云云服务器 ECS 上的开源 Hadoop、Spark、HBase、Hive、Flink 生态大数据 PaaS 产品。提供用户在云上使用开源技术建设数据仓库、离线批处理、在线流式处理、即时查询、机器学习等场景下的大数据解决方案。在2019杭州云栖大会大数据生态专场上,阿里巴巴技术专家王道远为大家分享了阿里云EMR的Spark Relational Cache实现亚秒级响应的交互式分析。
Spark Relational Cache实现亚秒级响应的交互式分析
|
缓存 分布式计算 云栖大会
2019杭州云栖大会回顾之Spark Relational Cache实现亚秒级响应的交互式分析
本文来自2019杭州云栖大会大数据生态专场中的分享《Spark Relational Cache实现亚秒级响应的交互式分析》
2539 0
2019杭州云栖大会回顾之Spark Relational Cache实现亚秒级响应的交互式分析
|
SQL 存储 缓存
EMR Spark Relational Cache的执行计划重写
作者:王道远,花名健身, 阿里巴巴计算平台EMR技术专家。 背景 EMR Spark提供的Relational Cache功能,可以通过对数据模型进行预计算和高效地存储,加速Spark SQL,为客户实现利用Spark SQL对海量数据进行即时查询的目的。
|
存储 分布式计算 调度
EMR Spark Relational Cache 利用数据预组织加速查询
本文介绍了EMR Spark的Relational Cache如何从数据量较大的Cube中快速提取出所需数据加速查询的原理。通过列式存储、文件索引、Z-Order等技术,我们可以快速过滤数据,大大减少实际发生的IO数据量,避免IO瓶颈的出现,从而优化整体查询性能。
|
分布式计算 Spark 存储
EMR Spark Relational Cache 利用数据预组织加速查询
在利用Relational Cache进行查询优化时,我们需要通过预计算,存储大量数据。而在查询时,我们真正需要读取的数据量也许并不大。为了能让查询实现秒级响应,这就涉及到优化从大量数据中快速定位所需数据的场景。
1783 0
|
SQL 分布式计算 Apache
EMR Spark Relational Cache如何支持雪花模型中的关联匹配
我们需要找到一种方式可以通过单个Relational Cache支持优化多个关联查询的方式,从而在加速用户查询的同时,减少创建和更新relational cache的代价。Record Preserve Join是支持这种优化的非常有效的方式。
|
SQL 分布式计算 Spark
EMR Spark Relational Cache如何支持雪花模型中的关联匹配
在Spark中,Join通常是代价比较大,尤其是shuffle join。Relational Cache将反范式化表(即关联后的大表)保存为relational cache,便可以使用cache重写执行计划,提高查询效率。
4560 0
|
SQL 分布式计算 Spark
钉钉群直播【Spark Relational Cache 原理和实践】
主要介绍Relational Cache/物化视图的历史和背景,以及EMR Spark基于Relational Cache加速Spark查询的技术方案,及如何通过基于Relational Cache的数据预计算和预组织,使用Spark支持亚秒级响应的交互式分析使用场景。
|
SQL 存储 缓存
EMR Spark Relational Cache的执行计划重写
背景 EMR Spark提供的Relational Cache功能,可以通过对数据模型进行预计算和高效地存储,加速Spark SQL,为客户实现利用Spark SQL对海量数据进行即时查询的目的。Relational Cache的工作原理类似物化视图,在用户提交SQL语句时对语句进行分析,并选出可用的预计算结果来加速查询。
3240 0
使用EMR Spark Relational Cache跨集群同步数据 | 6月6号云栖夜读
在本刊开篇文章中,讲述了:Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍如何使用Relational Cache跨集群同步数据表。
3595 0