在做的项目里面已经开始用到spark,其中一个项目的场景是这样的:
后台有一个activeMq的listener进程(它是一个守护进程),监听mq队列的消息。 每次收到一个消息,listener进程就会根据消息的内容(其实就是任务的参数,用于生成RDD),提交一个spark任务去运行。这里spark不是streaming,只是一个批处理任务。
我们都知道,activeMq的监听进程是守护进程,不会退出。也就是spark的Driver进程永远不会退出,当使用时间比较长的时候,我们在系统的/tmp目录下,发现大量的spark-<uuid> 的目录,每个目录里面有任务运行的jar包(我们任务依赖于大量的其他项目,用了sparkContext的setJarByClass设置jar包)。每个jar包有100M, 所以如果频繁提交spark任务,每次任务都会产生jar包,那将很快爆盘。(是的,我们就是被爆菊了。。)
其实