码迷,mamicode.com
首页 > 其他好文 > 详细

spark学习(一) --spark基本概念和任务调度

时间:2020-11-10 10:31:29      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:code   运算   情况   loading   就是   思路   info   存储   状态   

(一)RDDDataFreamDataSet 理解

1. RDD理解

(1) RDD定义为弹性分布式数据集合

 

MR运算之间数据共享差

MR的计算之间的数据共享只能通过将数据写入外部存储系统。后一步计算需要从外部存储系统中加载进来的方式进行。

 

Spark 思路相反,设计了一种抽象-RDD(弹性分布式数据集合),用户可以直接控制数据的共享。

  1. 用户可以控制存储到磁盘还是内存。解决了计算之间数据共享差的问题。
  2. 用户控制数据的分区方法。
  3. 用户控制数据集上等的操作。

 

(2) 弹性怎么理解

  1. 自定进行内存和磁盘两种存储方式的切换。
  2. TASK Stage执行出差会重试。
  3. 使用多用户管理。允许应用程序弹性的扩展和缩减计算资源。

(3) 容错性

  1. 对于有检查操作的RDD,某个分区的数据丢失,RDD记录有足够的信息(根据血缘关系)来重新计算。而且只需要计算该分区数据即可。这样减小数据恢复的代价。

(4) RDD的操作包含 创建操作、转换操作、控制操作和行动操作

  1. 创建操作

其一:来自内存集合和外部存储系统的数据,生成RDD。其二:通过转换操作生成RDD

  1. 转换操作:transform 操作。转换操作是懒执行。
  2. 控制操作:缓存命令等(缓存内存或者磁盘)。
  3. 行动操作:将结果转成scala集合或者变量。

(5) 后续

 

 

 

(二)基本概念

架构概念

  1. Application

Spark的运行程序,包含一个driver和若干个executor

  1. Driver

运行applicationmain方法。并创建spark Context

  1. Executor
  2. Spark Context

spark应用程序的入口,负责调度各运算资源,协调workNodeexecutor

  1. Job

Spark Context 提交的具体的action操作。

  1. Stage

每个job被分成多个计算小组。每个小组称之为stage。也称之为TaskSet

job按照宽依赖进行分割。成不同的stage

  1. Task

运行在executor上的运算单元。

  1. DAG Scheduler

能根据job构建StageDAG,并把stage提交给Task Scheduler

  1. Task Scheduler

taskSet提交给work Node集群并返回结果。

  1. RDD

弹性分布式数据集合。是spark的核心模块。

  1. Transformations

Spark API的一种类型。对RDD的一种加工。返回结果也是RDD。是懒执行。

  1. Action

Spark API的一种类型。对RDD的一种加工。返回结果不是RDD。是Scala的一种集合。

(三)任务提交(不同部署模式)

Spark的运行模式分为两种。Standalone YARN 两种。

1. Standalone

使用spark原生的资源管理器。Standalone模式有重要的4部分组成。Drivermasterworkerexecutor

(1) Driver:是一个运行的进程。我们编写的spark程序就运行在driver上。

(2) Master:是一个进程。负责资源的调度和分配。并进行集群的监控等职责。

(3) Worker:是一个进程。核心工作有两个。A.使用内存存储RDD的部分数据(RDD是分布式数据集)。B.启动其它线程(executor),对RDD进行运算。

(4) Executor:一个worker上可以启动多个executorExecutor可以多个线程来运行task

Client cluster 模式的区分标准在于。Driver是否运行在集群上。如果运行在集群上就是cluster模式。没有运行在集群上就是client模式。

(1) Standalone client模式

      技术图片

 

 

 

 

 

 

  1. Driver 在任务提交的机器上(client)运行。
  2. DriverMaster注册应用程序。
  3. Master根据实际情况分配资源。并通知资源对应的worker
  4. Worker 启动container进行。Containerdriver反向注册自己。

====================================任务提交流==============================

  1. DAG scheduler 根据job的宽依赖拆分成stageDAG。然后提交给TASK Scheduler,并由TASK scheduler 提交给executor
  2. 各个executor 实时上报task的运行状态。
  3. Driver job运行完成后,向Master 注销自己。
(2) Standalone cluster模式

         技术图片

 

 

 

 

 

  1. 本地机器向master提交应用程序。
  2. Master指定一个worker executor启动driver
  3. DriverMaster注册并申请计算资源。
  4. Master分配资源并指定对应的worker,启动executor。各个executordriver反向注册。

================================任务运行流程=================================

  1. DAG scheduler 根据job的宽依赖拆分成stageDAG。然后提交给TASK Scheduler,并由TASK scheduler 提交给executor
  2. H.各个executor 实时上报task的运行状态。
  3. I.Driver job运行完成后,向Master 注销自己。

 

2. YARN

YARN client 模式

运行在Hadoop的资源管理器YARN之上。

(1) YARN client 模式

         技术图片

 

 

 

  1. Driver运行在任务提交的机器上。Driver RM申请运行Application Master
  2. RM 分配一个Node Manager container ,启动Application MasterAMRMASM注册自己。
  3. AMRM申请job运算资源Executor
  4. AM向资源对应的Node Manager 发送命令,启动executor 。各个executorAM反向注册自己。
  5. 各个executor 实时汇报task的运行情况。
  6. Job运行完成后。AMRM注销自己。
(2) YARN cluster 模式

       技术图片

 

 

 

  1. 任务提交给RMRM寻找一个合适的Node Manager container 。启动driverApplication Master
  2. AMRM注册并申请资源。
  3. AM对资源对应的Node Manager 发送命令,启动executor
  4. Executor AM反向注册自己。
  5. DAG Scheduler 根据job的宽依赖拆分构建stageDAG,并提交给Task Scheduler .Task Scheduler 提交给executor并运行。
  6. Executor 实时汇报运行情况。
  7. 运行结束后,AMRM注销自己。

 

spark学习(一) --spark基本概念和任务调度

标签:code   运算   情况   loading   就是   思路   info   存储   状态   

原文地址:https://www.cnblogs.com/maopneo/p/13948024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!