|NO.Z.00075|——————————|BigDataEnd|——|Hadoop&Spark.V01|——|Spark.v01|Spark 原理 源码|Spark Runtime|
一、Spark 原理
### --- Spark 原理主要包括 :
~~~ 核心组件的运行机制(Master、Worker、SparkContext等)
~~~ 任务调度的原理
~~~ Shuffle原理
~~~ 内存管理
~~~ 数据倾斜处理
~~~ Spark优化
~~~ 熟练掌握 Spark 内核原理,能够帮助我们更好地完成 Spark 应用开发,
~~~ 并能够准确锁定项目运行过程中现问题的症结所在。
二、Spark Runtime

### --- 通用流程通用的流程:
Using spark-submit, the user submits an application.
In spark-submit, we invoke the main() method that the user specifies. It also launches the driverprogram.
The driver program asks for the resources to the cluster manager that we need to launch executors.
The cluster manager launches executors on behalf of the driver program.
The driver process runs with the help of user application. Based on the actions and transformation onRDDs, the driver sends work to executors in the form of tasks.
The executors process the task and the result sends back to the driver through the cluster manager.
三、核心组件
### --- 核心组件
~~~ Master(Cluster Manager):集群中的管理节点,管理集群资源,
~~~ 通知 Worker 启动 Executor 或 Driver。
~~~ Worker :集群中的工作节点,负责管理本节点的资源,
~~~ 定期向Master汇报心跳,接收Master的命令,启动Driver或 Executor。
~~~ Driver:执行 Spark 应用中的 main 方法,负责实际代码的执行工作。
### --- 其主要任务:
~~~ 负责向集群申请资源,向master注册信息
~~~ Executor启动后向 Driver 反向注册
~~~ 负责作业的解析、生成Stage并调度Task到Executor上
~~~ 监控Task的执行情况,执行完毕后释放资源
~~~ 通知 Master 注销应用程序
### --- Executor:
~~~ 是一个 JVM 进程,负责执行具体的Task。
~~~ Spark 应用启动时, Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。
~~~ 如果有 Executor 节点发生了故障或崩溃,
~~~ 会将出错节点上的任务调度到其他Executor 节点上继续运行。
### --- Executor 核心功能:
~~~ 负责运行组成 Spark 应用的任务,并将结果返回给 Driver 进程
~~~ 通过自身的 Block Manage 为应用程序缓存RDD
四、集群部署模式
### --- Spark 支持 3 种集群管理器,分别为:
~~~ # Standalone:
~~~ 独立模式,Spark 原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,
~~~ 无需依赖任何其他资源管理系统,
### --- 使用 Standalone 可以很方便地搭建一个集群;
### --- 目前支持的 Master 字符串及 URL 包括:
~~~ Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,
~~~ 如MapReduce、Storm 等,根据driver 在集群中的位置不同,分为 yarn client 和 yarn cluster;
~~~ Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上;
~~~ Spark 的运行模式取决于传递给 SparkContext 的 Master 环境变量的值,
~~~ 个别模式还需要辅助的程序接口来配合使用,
Master URL | Meaning |
local | 本地运行,只有一个工作进程,无并行计算能力 |
local[K] | 本地运行,有 K 个工作进程,通常设置 K 为机器的 CPU 核心数量 |
local[*] | 本地运行,工作进程数量等于机器的 CPU 核心数量。 |
spark://HOST:PORT | 以 Standalone 模式运行,这是 Spark 自身提供的集群运行模式, 默认端口号:7077 |
yarn-client | Yarn 集群上运行,Driver 进程在本地, Work 进程在 Yarn 集群上, 部署模式必须使用固定值:--deploy-mode client。 Yarn 集群地址必须在或HADOOP_CONF_DIR 或YARN_CONF_DIR 变量里定义 |
yarn-cluster | Yarn 集群上运行,Driver 进程在 Yarn 集群上,Work 进程也在 Yarn 集群上, 部署模式必须使用固定值:--deploy-mode cluster。 Yarn 集群地址必须在HADOOP_CONF_DIR 或 YARN_CONF_DIR 变量里定义 |
mesos://HOST:PORT | 在 Mesos 集群上运行,Driver 进程和 Worker 进程运行在 Mesos 集群上, 部署模式必须使用固定值:--deploy-mode cluster |
### --- 提交任务时,以下参数共同决定了 Spark 运行方式:
~~~ master MASTER_URL :决定了 Spark 任务提交给哪种集群处理
~~~ deploy-mode DEPLOY_MODE:决定了 Driver 的运行方式,可选值为 Client(缺省值) 或 Cluster
一、Yarn模式运行机制:Yarn Cluster 模式(生产)

### --- yarncluster模式说明
~~~ Client先RM提交请求,并上传jar到HDFS上
~~~ RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver)
~~~ AppMaster向RM注册应用程序,注册的目的是申请资源。RM监控App的运行状态直到结束
~~~ AppMaster申请到资源后,与NM通信,在Container中启动Executor进程
~~~ Executor向Driver注册,申请任务
~~~ Driver对应用进行解析,最后将Task发送到Executor上
~~~ Executor中执行Task,并将执行结果或状态汇报给Driver
~~~ 应用执行完毕,AppMaster通知RM注销应用,回收资源
二、Yarn Client 模式(调试)

### --- yarn client模式说明
~~~ 启动应用程序实例化SparkContext,向RM申请启动AppMaster
~~~ M在集群中选择一个NM,在其上启动AppMaster
~~~ AppMaster向RM注册应用程序,注册的目的是申请资源。RM监控App的运行状态直到结束
~~~ AppMaster申请到资源后,与NM通信,在Container中启动Executor进程
~~~ Executor向Driver注册,申请任务
~~~ Driver对应用进行解析,最后将Task发送到Executor上
~~~ Executor中执行Task,并将执行结果或状态汇报给Driver
~~~ 应用执行完毕,AppMaster通知RM注销应用,回收资源
### --- Client模式与Cluster模式的区别
~~~ # client模式:
~~~ Driver运行在客户端
~~~ 适用于调试,能直接看见各种日志
~~~ 连接断了,任务就挂了
~~~ # cluster模式:
~~~ Driver运行在AppMaster中(运行在集群中)
~~~ 适合于生产,日志需要登录到某个节点才能看到
~~~ 连接断了,任务不受影响~~~
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv018-spark.v03
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix