Spark集群管理架构包括:
集群资源管理器(ClusterManager)
运行作业任务的工作节点(Worker Node)
每个应用的任务控制节点(Driver)
每个工作节点上负责具体任务的执行进程(Executor)
where 资源管理器可以自带或Mesos或YARN
Spark集群管理流程
- 首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控。
- 资源管理器为Executor分配资源,并启动Executor进程。
- SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行,并提供应用程序代码。
- Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源 。
优点
与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:
- 利用多线程来执行具体的任务,减少任务的启动开销。
- Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销。