「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」
大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
刚接触大数据的时候,第一个接手的项目,好家伙,上来就打成一个zip包,200多M,每次打包需要等半天,每次提交azakaban看着缓慢的进度条,痛苦万分,每次给别人发包也是等进度条等的花都谢了。
2.优化开始
等到可以重构工程了,这个问题必须上手解决。
2.1 拆包
把工程重新架构一下,按功能区分项目,共同的东西单独一个子工程。
1 | 复制代码project |
2.2 提出脚本公共设置参数
原始代码中每个任务参数不固定,顺序不固定,并且配置文件位置也不固定,给排查问题造成很大困扰,优化后所有的参数必须统一格式,所有通用的信息都可以外部指定。
1 | css复制代码spark入参:主方法,flow,数据库,运行日期,配置文件,队列,版本号,结束日期 |
尤其是把数据库作为外部参数切必输,给后续多业务多版本运行提供的基础支撑。
版本号更多是为了后续优化做规范管理。
2.3从jar包中抽离静态文件到HDFS上
原本工程非常巨大,最大的原因就是引用的jar包都在本地,而且每次提交任务都需要拉取这些文件,也是浪费时间,所以这边从jar包中非子工程的jar包都放到hdfs上面,让任务本体大幅度减少,并且设定了版本号,方便多版本同时运行时互不冲突。
1 | bash复制代码/bin/spark-submit |
这样优化后,主任务包从200M被直接砍到10M,上传azkaban也是眨眼的事。
结束语
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
可关注公众号【怀瑾握瑜的嘉与嘉】,获取资源下载方式
本文转载自: 掘金