standalone集群 是spark自己带的资源调度集群
yarn是所有符合其标准的程序跟他申请资源他都给
Spark Standalone集群,仅仅只能向其提交运行Spark Application程序,其他应用无法提交运行
-
集群角色
主从架构(master -slave )
主角色 master ,管理整个集群的资源
从角色 workers,管理每台机器的 资源
历史服务器 history server
master是集群中含有Master进程的节点,slave是集群中的Worker节点含有Executor进程
-
standalone集群 与 Yarn集群的对比
应用运行架构
当将Spark Application运行在集群上时,所有组件组成如下所示:
第一部分、集群资源管理框架,以Standalone 集群为例
-
主节点Master:集群老大,管理节点
- 接受客户端请求、管理从节点Worker节点、资源管理和任务调度
- 类似YARN中ResourceManager
-
从节点Workers:集群小弟,工作节点
- 使用自身节点的资源运行Executor进程:给每个Executor分配一定的资源
- 类似YARN中NodeManager
第二部分 应用组成 应用管理者driver 和应用执行者executors
-
应用管理者Driver Program:每个应用老大
- 向主节点申请Executor资源,让主节点在从节点上根据需求配置启动对应的Executor
- 解析代码逻辑:将代码中的逻辑转换为Task
- 将Task分配给Executor去运行
- 监控每个Executor运行的Task状态
-
应用执行者Executors:应用中干活的
- 运行在Worker上,使用Worker分配的资源等待运行Task
- 所有Executor启动成功以后会向Driver进行注册
- Executor收到分配Task任务,运行Task,每个task 就是一个进程
- 可以将RDD数据缓存到Executor内存
流程:
1.客户端提交spark应用后,会首先启动一个 driver program进程
2.driver program 会向master 申请资源运行executor
3.master收到请求后,会在符合条件的worker 从节点上 启动对应个数的executor
4.启动的executor 会跟 driver反向注册
5.当所有的executor注册完成后,driver会开始从main函数开始执行,一行一行读取代码
6.当读到一个action触发算子的时候,DAG scheduler会根据回溯法,构建DAG 调度图
7,DAG scheduler 会划分stage,当遇到一个宽依赖就划分stage
8.在每个stage中,由task scheduler 根据每个stage中 最后一个rdd的分区数,确定task任务的个数
(需要注意的是,spark当中task的计算模式 都是pipeline 管道计算模式,即先建立每个stager中 每个rdd分区的通道,在一个一个去计算)
9.最后task scheduler调度所有的task 到 executor中去执行