在集群上运行Spark(Spark调度管理和作业执行)

本文详细介绍了Spark在集群上的运行模式,包括local、standalone、YARN和Mesos。深入解析了宽窄依赖的概念,阐述了Spark的架构设计,如Master、Cluster Manager、Worker和Executor的角色。同时,文章详细描述了Spark任务的提交过程,对比了yarn-client和yarn-cluster模式的差异。此外,还讨论了RDD的进化过程及其懒加载特性。总结了Spark作业执行流程和关键概念。
摘要由CSDN通过智能技术生成

前言

相比于传统的Mapreduce批处理框架,Spark的计算速度快了近10倍,一方面得益于Spark基于内存计算,减少的数据的Shuffle,另一方面还得益于Spark优秀的调度管理模块。下面是个人的一点小总结。

1、运行模式

local 用于调试
standalone Spark自带的资源调度框架
yarn
mesos

2、宽窄依赖

宽依赖:父RDD只会被一个子RDD使用 一对多 多对一
窄依赖:父RDD被多个子RDD使用 一对多 (会产生磁盘落地Shuffle

Stage就是按照宽窄依赖来划分的

3、Spark架构设计

  1. Master 主节点 资源管理 集群状态
  2. Cluster Manager 集群中获取资源的外部服务如yarn standalone
  3. Worker 从节点 管理节点的资源 创建Executor 将从节点主机资源分配给Executor
  4. Application:Spark程序
  5. Executor :Worker节点上为每个Application启动的进程,该进程负责运行任务并且将结果落地写入磁盘,每Application都有独立的Executor
  6. Driver:链接Worker的程序 每个Application都有独立的Driver
  7. Task:Executor上执行的最小工作单元 。每个 stage 里面 task 的数目由该 stage 最后一个 RDD 中的 partition 个数决定。
  8. Job:包含多个Task Application中有几个Action算子就有几个Job
  9. Stage:一个Job会拆分成多个Stage,每个Stage由多个Task并行执行
    在这里插入图片描述


## 4、Spark相比MapReduce 1、Spark基于内存 Mr基于磁盘 2、Spark会为每个Rdd组织一个DAG有向无环图,效率高 3、Spark是粗粒度资源申请 MR是细粒度的 什么是粗粒度,细粒度?
粗粒度就是执行Application之前系统申请足够多的资源给Executor,可能会过剩 但是不需要Task单独申请 细粒度相反,需要每个Task单独申请资源

粗粒度优缺点:速度快 但是集群资源会造成浪费
细粒度优缺点:速度慢 但是可以有效利用集群资源

5、Spark任务提交过程

转载https://www.linuxidc.com/Linux/2018-02/150886.htm

1. Standalone模式

在这里插入图片描述

2、 yarn-client模式,Dirver运行在本地的客户端上。
在这里插入图片描述
1.client向ResouceManager申请启动ApplicationMaster,同时在SparkContext初始化中创建DAGScheduler和TaskScheduler

2.ResouceManager收到请求后,在一台NodeManager中启动第一个Container运行ApplicationMaster

3.Dirver中的SparkContext初始化完成后与ApplicationMaster建立通讯,ApplicationMaster向ResourceManager申请Application的资源

4.一旦ApplicationMaster申请到资源,便与之对应的NodeManager通讯,启动Executor,并把Executor信息反向注册给Dirver

5.Dirver分发task,并监控Executor的运行状态,负责重试失败的task

6.运行完成后,Client的SparkContext向ResourceManager申请注销并关闭自己



3、yarn-cluster模式
第一个阶段是把Spark的Dirver作为一个ApplicationMaster在yarn中启动;

第二个阶段是ApplicationMaster向ResourceManager申请资源,并启动Executor来运行task,同时监控task整个运行流程并重试失败的task;
在这里插入图片描述
Yarn-client和Yarn-cluster的区别:

yarn-cluster模式下,Dirver运行在ApplicationMaster中,负责申请资源并监控task运行状态和重试失败的task,当用户提交了作业之后就可以关掉client,作业会继续在yarn中运行;

yarn-client模式下,Dirver运行在本地客户端,client不能离开。

6、RDD进化过程

网上看到一张图,感觉很形象O(∩_∩)O哈哈~

rdd是懒加载的
最后action算子触发所有的RDD操作,成为行走的人
在这里插入图片描述

总结

本文主要讲了:
Spark在集群上提交任务的执行流程以及一些名词的解释
Spark运行时架构
宽窄依赖 以及Spark与MR的区别
RDD的转换过程
Spark运行模式 local yarn standalone mesos

本文未提到的:
如何向集群提交一个Spark Application

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值