Java教程

浅谈 Spark SQL 实现任务质量治理的思路

本文主要是介绍浅谈 Spark SQL 实现任务质量治理的思路,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

本文隶属于专栏《Spark异常问题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见 Spark异常问题汇总

正文

问题

Spark 集群白天资源比较少,分析脚本可能会跑的时间很长,对此想做一些限制,但由于晚上和白天的机器不一样多,如果仅仅限制脚本的执行时间,可能不太合理(比如白天这个脚本跑 20min 晚上可能只需要 3min ),有没有更好的方案?

背景

主要是希望可以给分析师或者数仓同事一些脚本质量反馈,提高开发效率。 提高数据产出的质量和速度,而不是一味的堆脚本堆资源。

解决

质量标准

脚本质量其实是给脚本一个评分,常见的几个纬度有:扫描小文件数,空跑task数,数据倾斜度,task最大和平均GC时间,稳定性等

整体思路

spark => dynamic allocation
yarn => 资源调度器

实现思路一

先统计调查下繁忙时间段的所有任务的平均执行时间,然后乘以一个放大因子得出一个阈值,超出这个值就 kill。

实现思路二

分队列限定资源,在限定资源的前提下,这个时候堆资源跑的任务就没啥意义了。列个慢任务列表 给他们提示7天内优化掉, 要不就下任务。

当然特殊重要任务(给老板看的,那帮孙子最爱用这话来怼)指定时间优化不了可以商量。

这篇关于浅谈 Spark SQL 实现任务质量治理的思路的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!