saveAsTextFile很慢very slow

来源:互联网 发布:好记的淘宝店铺的店名 编辑:程序博客网 时间:2024/05/16 10:57

问题表象:通过spark UI观察整个执行阶段开在saveAsTextFile阶段,很多task一直处于运行阶段,感觉很慢,程序是不是卡出了。

初步判断:saveAsTextFile既然是卡在了这,肯定是IO瓶颈吧?因为其他阶段特别快呀

分析:

首先根据以往经验,saveAsTextFile应该是一个非常快速的操作。

查看save的结果,只有1024M左右(为我的耐心点赞,为了看输出结果,我等了60分钟!等的花都谢了),可以断定把这个量级的数据导出来是不会消耗多少时间的

那问题来了,这到底是在哪里出了问题导致这么慢,通过UI感觉前面的计算阶段很快呀

很遗憾,那都是表现,不信你在saveAsTextFile面前加一个count的,然后你会发现在spark UI中不在卡在save阶段了,而是卡在了count

豁然开朗,本spark程序并不是一个IO密集型的程序,而是一个计算密集型的程序


怎么办?

翻开spark程序优化宝典,看了半天全是在围绕内存和序列化做文章!

然后再看看自己程序,使用了传说中宇宙最强的序列化类,而且内存已经快开到队列的极限,马上就要引起运维大哥的注意了

回到最初,也许spark除了内存计算最强外,spark还有个分布式的概念吧

对了,那就是增加并行度

增加分区数,增加到365试试,同时增加--num-executors的数量,别怕,先让它等于前面的分区个数试试,记得调低每个core的内存,不然队列就爆了


0 0