Driver和Executors

Driver和Executors

Content #

分布式计算的精髓在于,如何把抽象的计算流图,转化为实实在在的分布式计算任务,然后以并行计算的方式交付执行。

进程模型的核心是 Driver 和 Executors。任何一个 Spark 应用程序的入口,都是带有 SparkSession 的 main 函数,而在 Spark 的分布式计算环境中,运行这样 main 函数的 JVM 进程有且仅有一个,它被称为 “Driver”。

Driver 最核心的作用,在于解析用户代码、构建计算流图,然后将计算流图转化为分布式任务,并把任务分发给集群中的 Executors 交付执行。接收到任务之后,Executors 调用内部线程池,结合事先分配好的数据分片,并发地执行任务代码。 Driver 进程的 3 个核心组件:

  1. 根据用户代码构建计算流图(DAGScheduler)
  2. 根据计算流图拆解出分布式任务(TaskScheduler)
  3. 将分布式任务分发到 Executors 中去(SchedulerBackend)

对于一个完整的 RDD,每个 Executors 负责处理这个 RDD 的一个数据分片子集。每当任务执行完毕,Executors 都会及时地与 Driver 进行通信、汇报任务状态。 Driver 在获取到 Executors 的执行进度之后,结合计算流图的任务拆解,依次有序地将下一阶段的任务再次分发给 Executors 付诸执行,直至整个计算流图执行完毕。

Viewpoints #

From #

04 | 进程模型与分布式部署:分布式计算是怎么回事?