standalone集群
2024-04-10 13:40:32  阅读数 601

standalone集群 是spark自己带的资源调度集群
yarn是所有符合其标准的程序跟他申请资源他都给
Spark Standalone集群,仅仅只能向其提交运行Spark Application程序,其他应用无法提交运行

image.png
  • 集群角色

主从架构(master -slave )
主角色 master ,管理整个集群的资源
从角色 workers,管理每台机器的 资源
历史服务器 history server

master是集群中含有Master进程的节点,slave是集群中的Worker节点含有Executor进程

  • standalone集群 与 Yarn集群的对比
image.png

image.png

应用运行架构

8、Spark 计算引擎:Spark应用组成.png

当将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内存
18、Standalone集群:Spark应用提交完全组件流程.png

流程:
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中去执行