Spark-core 运行原理

本文详细介绍了Spark Core的运行原理,包括应用程序、驱动程序、执行单元和集群管理程序的角色。SparkContext在资源管理器上注册并申请Executor资源,Task Scheduler负责任务分发。调度模式涵盖Standalone和YARN,分别解析了YARN-Client和YARN-CLUSTER模式的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构图在此

这里写图片描述

Spark Core部件解析

  • 应用程序(Application): 基于Spark的用户程序,包含了一个Driver Program 和集群中多个的Executor;
  • 驱动程序(Driver Program): 运行Application的main()函数并且创建 SparkContext. 通常用SparkContext代表Driver Program
  • 执行单元 (Executor): 是为某Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都有各自独立的Executors
  • 集群管理程序(Cluster Manager): 在集群上获取资源的外部服务(例如:Standalone、Mesos或Yarn);

Spark Core中操作RDD的命令分为Transformation和Action
Transformation都是采用的懒策略,如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。
map 就是Transformation
collect(), take()等则是Action

运行原理

这里写图片描述
- SPARK CORE的驱动程序首先运行Application的main函数并创建建立Spark Application的运行环境即SparkContext,SparkContext被注册到某类资源管理器上:Standalone、Mesos或YARN并申请运行Executor资源;
- 资源管理器分配Executor资源并启动Executor后端服务并接受主节点命令以及进行状态汇报
- SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给 Task Scheduler。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor。
- Task在Executor上运行,运行完毕释放所有资源。

调度模式

这里写图片描述

Standalone模式 (Spark自带的模式)

  • spark-shell交互式工具提交Spark的Job时,Driver在Master节点上运行

  • spark-submit工具提交Job时Driver运行在本地Client端上

$ spark-shell --master spark://localhost:7077 --executor-memory 1g
4 is the number of cores available on your machine

这里写图片描述

YARN模式

  • YARN (在HADOOP2.0中替代JOB TRACKER 资源分配工作做) 包括两大部件:

    • ResourceManager (由Application Manager 和Scheduler 组成)负责将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是Container,其中封装了机器资源,如内存、CPU、磁盘和网络等,每个任务会被分配一个Container,该任务只能在该Container中执行,并使用该Container内的资源. ResourceManager同时在每个DataNode上产生ApplicationMaster以监控Container的运行

    • NodeManager是一个个的计算节点,主要负责启动和资源上监控Application所需的 Container, 包括监控例如内存、CPU、磁盘和网络等的使用情况并将之汇报给ResourceManager。ApplicationMaster与具体的Application相关,主要负责同ResourceManager协商以获取合适的Containers,并跟踪这些Containers的状态和监控其进度;
      这里写图片描述

YARN-Client模式
  • Yarn-Client模式中,Driver在客户端本地运行,这种模式可以使得Spark Application和客户端进行交互,因为Driver在客户端,所以可以通过webUI访问Driver的状态,默认是http://hadoop1:4040访问,而YARN通过http:// hadoop1:8088访问。Yarn-Client模式中Application Master仅仅向YARN请求Executor,Client会和请求的Container通信来调度他们工作,也就是说Client不能离开

输入如下命令即可使用YARN-Client模式

$./spark-shell --master YARN-client --num-executors 3 --executor-memory 1g

YARN-CLUSTER模式

  • 当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序
    1. 把Spark的Driver作为一个ApplicationMaster在YARN集群中先启动;
    2. 由ApplicationMaster创建应用程序,然后为它向ResourceManager申请资源,并启动Executor来运行Task,同时监控它的整个运行过程,直到运行完成.

Driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,因而YARN-Cluster模式不适合运行交互类型的作业.

spark-submit --master YARN-cluster
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值