最近,在spark streaming 调优时,发现个增加job并行度的参数spark.streaming.concurrentJobs
,spark 默认值为1,当增加为2时(在spark-default中配置),如遇到处理速度慢 streaming application UI 中会有两个Active Jobs(默认值时为1),也就是在同一时刻可以执行两个批次的streaming job,下文分析这个参数是如何影响streaming 的执行的。
参数引入
在spark streaming 的JobScheduler line 47,读取了该参数:
private val numConcurrentJobs = ssc.conf.getInt("spark.streaming.concurrentJobs", 1)
private val jobExecutor = ThreadUtils.newDaemonFixedThreadPool(numConcurrentJobs, "streaming-job-executor")
使用concurrentJobs参数初始化jobExecutor线程池,也就是这个参数直接