spark 运行原理讲解的是 spark 在运行期间集群中的节点是怎么接收任务和处理任务的
具体的步骤如下:
1, 在客户端通过命令提交一个 job 任务的时候, Driver 就会启动相关的节点进行工作
2, 客户端的 driver 会向 master 注册资源.
在这两步中, driver 的角色实际上就是通知集群有任务了, 开始干活, 而具体启动任务的是 master,master 的角色就是分配做任务的资源, 并且监控资源的使用情况, 这就好比干个工程, master 就是负责调度车辆, 分配沙子水泥的用料和用量的, 实际上就是调度工种的工作
3,master 会让 worker 启动 executor 进行进行工作, worker 实际上是不工作的, 他就相当于一个公司, 听从 master 的用料和用量来启动 executor, 真正干活的是 executor
干活的进程是 execitorBackend 这个进, 所以在我们提交任务后, 会在 worker 节点上看到这个进程名字, 他就是具体的工作进程,
4,ExecutorBackend 会向 driver 注册, 这一步的意义就是让 driver 知道是谁干活, diver 知道了以后, 就会找个调度经理 SchedulerBackend 来给 ExecutorBackend 分活干, 这时候还会涉及一个 DAGScheduler, 他是把任务具体细分的一个功能, 就是任务细分员, 把任务划分成多个阶段 (stage), 然后以 task 的方式下发给 ExecutorBackend
Driver 相当于项目经理, DAGScheduler 相当于项目小组长, driver 接活, 让 DAGScheduler 划分任务, 然后给大哥, 这时候还会涉及一个 DAGScheduler, 他是把任务具体细分的一个功能, 就是任务细分员, 把任务划分成多个阶段 (stage), 然后以 task 的方式下发给 ExecutorBackend 分活干, 那么在这个过程中, driver 这个项目经理就是个动嘴的, master 和 worker 是监控资源的, 看看哪辆车不好用了给你换一辆, 那个工人不干活了给你换一个, 真正干活的就是 SchedulerBackend(调度员),DAGScheduler(项目组长),ExecutorBackend(工人)
其实整个 spark 的调度和平时的工地施工, 项目开发流程都是类似的, 说白了就是有人监工, 有人划分任务, 有人分配任务, 有人干活
来源: http://www.bubuko.com/infodetail-3506466.html