Spark学习(一)

RDD产生的条件(3种)

  1. 从集合中创建RDD
    • parallelize函数创建
    • makeRDD函数创建
  2. 从外部存储创建RDD
    • textFile()获取本地文件系统
  3. 从其他RDD转换得到新的RDD
    • transformation转换算子
    • action行动算子

Spark的弹性体现

  1. 存储的弹性:内存和磁盘的自动切换
  2. 容错的弹性:数据丢失可以自动恢复
  3. 计算的弹性:计算出错重试机制
  4. 分片的弹性:可根据需要重新分片

持久化和checkpoint的区别

  1. 持久化只是将数据保存在BlockManager中,而RDD的血缘关系不变的,但是checkpoint的数据通常是存储在如HDFS等容错、高可用的文件系统,数据丢失可能性小
  2. 持久化的数据丢失可能性较大,磁盘内存都有可能数据丢失,但是checkpoint的数据通常存储在如HDFS等容错、高可用的文件系统,数据丢失可能性较小
  3. 默认情况下,如果某个RDD没有持久化,但是设置了eheckpoint,会存在问题,本来这个job都要都要执行结束了,但是由于RDD没有持久化,ehcekpoint job想要将RDD的数据写入到外部文件系统的话,需要全部重新计算一次,再将计算出来的RDD数据checkpoint到外部文件系统

Spark集群管理器

为了能让Spark可以高效的在一个计算节点和数千个计算节点之间伸缩运行,所以有了Spark集群管理器

  1. Hadoop Yarn(国内使用最广泛)
  2. Apache Mesos(国内使用较少,国外使用多)
  3. Standalone(Spark 自带的资源管理器,需要在每个集群中的每台节点上配置spark)

Spark核心概念介绍

Master:

Spark特有资源调度系统的Leader,掌握着整个集群的资源信息,类似于Yarn架构中的ResourceManager

主要功能:

  • 监听Worker,看Worker是否正常工作
  • 接收worker的注册并管理所有的Worker,接收Client提交的Application,调度等待的Application并向Worker提交

Worker:

Spark特有资源调度系统的Slave有多个,每个Slave掌管着所在节点的资源信息,类似于Yarn框架中的NodeManager

主要功能:

  • 通过RegisterWorker注册到Master
  • 定时发送心跳给Master
  • 根据Master发送的Application配置进程环境,并启动ExecutorBackend执行Task所需的临时进程

Spark中clientcluster提交的区别

Standalone-Client

执行流程:

  • client模式提交任务后,会在客户端启动Driver进程
  • Driver会向Master申请启动Application启动资源
  • 资源申请成功,Driver端将task分发到worker端执行,启动executor进程(任务分发)
  • Worker端(executor进程),将task任务的计算结果返回Driver

缺点:

  • 在当前的节点启动driver进程,如果每次都是client提交任务,那么所有的application应用程序会在一个节点上启动dirver进程,会造成客户端出现网卡流量暴增的情况

优点:

  • client只适用于测试环境,Driver会在客户端启动(提交任务节点),可以在Driver端看到task任务执行情况

Standalone-Cluster

执行流程:

  • cluster模式提交应用程序后,会向Master请求启动Driver
  • Master接收请求,随机在集群一台节点上启动Driver进程
  • Driver启动后为当前的应用程序申请资源
  • Driver端发送taskworker节点上执行
  • worker上的executor进程将执行情况和执行结果返回给Driver

优点:

  • 解决了client端提交任务时会出现的网卡流量暴增的情况

缺点

  • 任务提交后不能看到日志,只能通过yarn ui页面查看日志

Yarn-Client

执行流程:

  • 客户端提交一个Application,在客户端启动一个Driver进程
  • 应用程序启动后会向RS(ResourceManager)(相当于standalone模式下的master进程)发送请求,启动AM(Application Master)
  • RS收到请求后,随机选择一台NM(NodeManager)启动AM,这里NM相当于Standalone中的worker进程
  • AM启动后,会向RS请求一批container资源,用于启动Executor
  • RS会找到一批NM(包含container)返回给AM,用于启动Executor
  • AM会向NM发送命令启动Executor
  • Executor启动后,会反向注册给Driver,Driver发送taskExecutor,执行情况和结果返回给Driver

优点和缺点与**Standalone-client**一致

Yarn-cluster

执行流程:

  • 客户机提交Application应用程序,发送请求到RS(ResourceManager),请求启动AM(ApplicationMaster)
  • RS收到请求后随机在一台NM(NodeManager)上启动AM(相当于Driver端)
  • RS返回一批NM节点给AM
  • AM连接到NM,发送请求到NM启动Executor
  • Excutor反向注册到AM所在节点的DriverDriver发送taskExcutor

优点和缺点与**Standalone-cluster**一致

Spark资源调度和任务调度的流程

资源调度:

  • DAGScheduler主要的作用就是将DAG根据RDD之间的宽窄依赖关系划分为一个个的Stage,然后将这些stageTaskSet的形式提交给TaskScheduler(TaskScheduler是任务调度的底层调度器,这里TaskSet其实就是一个集合,里面封装的就是一个个task任务,也就是stage中并行的task任务)

任务调度:

  • TaskSchedule会遍历TaskSet集合,拿到每个task后将task发送到Executor中去执行(其实就是发送到Executor中的线程池ThreadPool去执行)
  • TaskScheduler不仅会重试失败的task任务,同时还会重试任务进行(缓慢,落后)的task任务,对于运行缓慢的task任务,TaskScheduler会重新开启一个新的task执行这个缓慢人物的相同处理逻辑,哪个任务先执行完,就以哪个为准,这个就是TaskScheduler推测执行
  • 但是当遇到数据倾斜的情况,TaskScheduer的推测执行又会开启一个新的Task任务,可能会处于死循环的状态,任务可能一致处于处理不完的状态
1、task在Executor线程池中的运行情况会向TaskScheduler反馈,当task执行失败时,则由TaskScheduler负责重试,将task重新发送给Executor去执行,默认重试3次,如果重试3次依然失败,那么这个stage就失败了
2、如果stage失败了就由DAGScheduler进行重试,重新发送TaskSet给DagScheduler任务调度器,如果stage重试4次,那么就证明这个job任务就失败了。Application应用程序失败

粗粒度资源申请和细粒度资源申请

粗粒度资源申请(代表Spark)

Application执行之前,将所有的资源申请完毕,当资源申请成功后,才会进行任务的调度,当所有的task执行完毕后,才会释放这部分资源

优点: 在Application执行之前,所有的资源都申请完毕,每一个task直接使用资源就可以了,不需要task在执行前自己去申请资源,task启动就快了,task执行快了,stage执行就快了,job就快了,application就快了

缺点:直到最后一个task执行完成才会释放资源,集群的资源无法充分利用

细粒度资源申请(代表MR)

application执行之前不需要先去申请资源,而是直接执行,让job中的每一个task在执行之前自己去申请资源,task执行完成就释放资源

优点:集群的资源可以充分利用

缺点:效率过低,task启动慢了,task执行就慢了,stage执行就慢了,job就慢了,application就慢了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值