Spark中关于粗粒度细粒度

一、粗粒度

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是一个典型细粒度资源调度。

原文地址:https://www.cnblogs.com/yangfanfan/p/11385400.html