Spark架构及执行流程
2023-05-11 17:24:02 5 举报
Spark架构及执行流程
作者其他创作
大纲/内容
Executor
Container
1.申请启动ApplicationMaster
5.当资源申请充足后反向注册给Driver
NodeManager
ResourceManager
Cilent
ApplicationMasterDriver
6.SparkContext 解析 Applicaiton 代码,创建 RDD,构建 DAG,并提交给DAGScheduler 分解成 Stage(当碰到 Action 算子时,就会催生 Job,每个 Job 中含有 1 个或多个 Stage),然后将Stage(或者称为 TaskSet)提交给 TaskScheduler,TaskScheduler 负责将 Task 分配到相应的 Worker,最后提交给Executor 执行(发送到 Executor 的线程池中);7.每个 Executor 会持有一个线程池,Executor 通过启动多个线程(Task)来对 RDD 的 Partition 进行并行计算,并向SparkContext 报告,直至 Task 完成。8.所有 Task 完成后,SparkContext 向 Master 注销,释放资源。任务失败的处理情况如下:1.Task失败后由TaskScheduler进行重新提交默认提交3次,如果3次还失败。那么这个 Task 所在的 Stage 就失败了。2.Stage 失败了会由 DAGScheduler 来负责重试,Stage 默认重试 4 次。如果重试 4次以后依然失败,那么这个 Job 就失败了。Job 失败则 Application 提交失败。3.TaskScheduler 不仅能重试失败的 Task,还会重试 Straggling(落后,缓慢)的 Task如果有运行缓慢的 Task 那么 TaskScheduler 会启动一个新的 Task 来与这个运行缓慢的 Task 执行相同的处理逻辑。两个 Task 哪个先执行完,就以哪个 Task 的执行结果为准。这就是 Spark 的推测执行机制。
提交Application
2.选择一台资源充沛的节点分配一个Container在开启一个ApplicationMaster进程在Aplication中初始化Sparkcontext
3.计算Job所需要的资源并向ResourceManager申请资源
Spark YARN Client
0 条评论
下一页