一、粗粒度
1.工作原理:
(1)Spark Streaming接收到实时数据流(data stream)
(2)Spark Streaming把数据按照指定的时间段切成一片片小的数据块(小批次)
(3)然后Spark Streaming把小的数据块传给Spark Engine处理
(4)Spark Engine处理后,输出处理后的数据(processed result)
每个应用程序的运行环境由一个Driver和若干个Executor组成,其中,每个Executor占用若干个资源,内部可运行多个Task,应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源(即使不用),最后程序运行结束之后,回收这些资源
Spark是一个典型粗粒度资源调度。
二、细粒度
1.工作原理:
(1)driver:启动spark应用程序,构建StreamingContext
(2)executor:启动receiver接收器,接收数据
(3)executor:接收input Stream,然后拆分不同block(小块)
(4)executor:receiver将block存储信息发送给StreamingContext
(5)driver:启动job,然后将task提交到对应executor上执行
与粗粒度模式一样,应用程序启动时,辉县启动executor,但每个executor占用的资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,cluster manager会为每个task根据自身需要动态分配资源。单个task运行完后就马上释放对应的资源。每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显,作业运行延迟大(重新分配task的资源是比较耗时的)
MapReduce是一个典型细粒度资源调度。