使用spark过程中遇到的技术问题及自身问题

2018-01-22  本文已影响0人  VIPSHOP_FCS

最近的一个项目中使用了spark技术过程遇到的一些问题,下面就以问题来分析原因及解决过程

问题

1、创建sparkView没有加限制条件,导致创建几十上百万大数据量的view时,多库的情况下在driver创建了 大量的view,就把driver端的内存撑爆了,之前线上没有暴露出来的这个问题原因主要是每一个小时都会处理一次,每次数据量都不大,后面任务有停了几天,数据量突增了很多,这时就出现很多问题

2、使用spark过程中只用于查询大数据量的源数据,其中数据运算过程都是在使用JAVA方式满1000条处理,运算过程是逐条进行运算,代码中产生过程多的对象,没有处理完数据一直驻留在内存,造成严重的FULL-GC,sparkUI上面也发现大量任务处于DEAD状态。

3、运算过程使用大量的JDBC的方式查询关联的它表数据,每条数据每次查询它表几毫秒,一旦数据量放大时,消耗时间也是非常大的,而且运算过程中会按多个步骤顺序查询关联表数据(每个步骤都会做,并没有做缓存机制)。

4、每条数据进行运算时,都打印出大量日志信息,有些日志信息可以不用输出的,打印日志也是导致性能问题之一。

针对上述这些怀情况已经严重影响到处理速度问题,进行结构上改造,充分利用起spark的技术优势,如下:

总结

经过一系列的改造后,从之前的每小时处理200百万数据提升到每小时处理上千万的数据量;在该过程中遇到很多的问题及困难,主要是自己对spark方面的知识了解不够深入,在代码结构及细节上处理上面还不够细致。通过同事们帮助下,顺利地解决了spark性能上的问题

作者:唯品会-蒋先辉
日期:2018.1.22

上一篇 下一篇

猜你喜欢

热点阅读