spark调优(四):瘦身任务主体1.起因2.优化开始结束语

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~


1. 起因

刚接触大数据的时候,第一个接手的项目,好家伙,上来就打成一个zip包,200多M,每次打包需要等半天,每次提交azakaban看着缓慢的进度条,痛苦万分,每次给别人发包也是等进度条等的花都谢了。

2.优化开始

等到可以重构工程了,这个问题必须上手解决。

2.1 拆包

把工程重新架构一下,按功能区分项目,共同的东西单独一个子工程。

project
|-XXX-api
|-xxx-common
|-xxx-context
|-xxx-业务
复制代码

2.2 提出脚本公共设置参数

原始代码中每个任务参数不固定,顺序不固定,并且配置文件位置也不固定,给排查问题造成很大困扰,优化后所有的参数必须统一格式,所有通用的信息都可以外部指定。

spark入参:主方法,flow,数据库,运行日期,配置文件,队列,版本号,结束日期
复制代码

尤其是把数据库作为外部参数切必输,给后续多业务多版本运行提供的基础支撑。

版本号更多是为了后续优化做规范管理。

2.3从jar包中抽离静态文件到HDFS上

原本工程非常巨大,最大的原因就是引用的jar包都在本地,而且每次提交任务都需要拉取这些文件,也是浪费时间,所以这边从jar包中非子工程的jar包都放到hdfs上面,让任务本体大幅度减少,并且设定了版本号,方便多版本同时运行时互不冲突。

/bin/spark-submit
-jars hdfs:///xx/java/lib/${version}/*.jar
复制代码

这样优化后,主任务包从200M被直接砍到10M,上传azkaban也是眨眼的事。


结束语

如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~

可关注公众号【怀瑾握瑜的嘉与嘉】,获取资源下载方式