Spark程序的端到端运行架构解读

版权声明:本博客都是作者10多年工作总结 https://blog.csdn.net/Peter_Changyb/article/details/82661389

Spark任务提供多层分解的概念,Spark组件将用户的应用程序分解为内部执行任务并提供执行容器,资源管理为spark组件提供资源管理和调度。

Spark任务:

  1. 应用程序:由一个driver program和多个job构成;
  2. job:由多个stage组成;
  3. stage:对应一个taskset,
  4. taskset:对应一组关联的相互之间没有shuffle依赖关系的task组成。
  5. task:任务最小的工作单

Spark组件:

  1. Driver Program (驱动程序) 是Spark 的核心组件
  2. 构建SparkContext(Spark应用的入口,它负责和整个集群的交互,创建需要的变量,还包含集群的配置信息等)
  3. 将用户提交的job转换为DAG图(类似数据处理的流程图)
  4. 根据策略将DAG图划分为多个stage,根据分区从而生成一系列tasks
  5. 根据tasks要求向资源管理器申请资源
  6. 提交任务并检测任务状态
  7. Executor真正执行task的单元,一个Worker Node上可以有多个Executor

资源管理组件

  1. YARN(通用) Master/Slave结构
  2. Resource Manager(RM)全局的资源管理器,负责系统的资源管理和分配
  3. Node Manager(NM)每个节点上的资源和任务管理器
  4. ApplicationMaster(AM)每个应用程序都有一个,负责任务的调度和监视,并与RM调度器协商为任务获取资源。
  5. Standalone(Spark自带)Master/Slave结构
  6. Master类似于YARN的RM
  7. Worker类似于YARN的NM

Spark的任务执行流程

  1. Driver完成task的解析和生成
  2. Driver向Cluster Manager(集群资源管理器)申请运行task需要的资源。
  3. 集群资源管理器为task分配满足要求的节点,并在节点按照要求创建Executor
  4. 创建的Executor向Driver注册。
  5. Driver将spark应用程序的代码和文件传送给分配的executor
  6. executor运行task,运行完之后将结果返回给Driver或者写入HDFS或其他介质。

猜你喜欢

转载自blog.csdn.net/Peter_Changyb/article/details/82661389
今日推荐