首页 > 代码库 > Spark运行模式概述

Spark运行模式概述

 

 

 

 

 

Spark编程模型回顾

Spark编程模型几大要素

          技术分享

  (1) Driver Program
  (2) 输入-Transformation-Action
  (3) 缓存
  (4) 共享变量
 
 
 
 
 
 
 
 
RDD的五大特征

            技术分享

  (1)分区--- partitions
  (2)依赖--- dependencies()
  (3)计算函数--- computer(p,context)
  (4)分区策略(Pair RDD)-- partitioner()
  (5)本地性策略--- preferredLocations(p)
 
 
 
 
 
 
 

Spark基本运行流程

  Application program的组成

          技术分享

  (1)Job : 包含多个Task 组成的并行计算,跟Spark action对应。
  (2)Stage : Job 的调度单位,对应于TaskSet 。
  (3)TaskSet :一组关联的、相互之间没有shuffle 依赖关系的任务组成的任务集。
  (4)Task : 被送到某个executor 上的工作单元
 
 
 
 
 
运行流程概述

            技术分享

 

 

 

具体流程(以standalone模式为例)

技术分享

 

 

 

 

 

任务调度

        技术分享

 

 

 

 

 

 

DAGScheduler

  (1)构建Stage—碰到shuffle就split

  (2)记录哪个RDD 或者Stage 输出被物化

  (3)重新提交shuffle 输出丢失的stage

  (4)将Taskset 传给底层调度器

  (5)本地性策略--- preferredLocations(p)

1.spark-cluster TaskScheduler
2.yarn-cluster YarnClusterScheduler
3.yarn-client YarnClientClusterScheduler

 

 

 

 

TaskScheduler

  (1)为每一个TaskSet 构建一个TaskSetManager 实例管理这个TaskSet 的生命周期

  (2)数据本地性决定每个Task 最佳位置(process-local, node-local, rack-local and then and any

  (3)提交taskset( 一组task) 到集群运行并监控

  (4)推测执行,碰到straggle 任务放到别的节点上重试

  (5)出现shuffle 输出lost 要报告fetch failed 错误

 

 

 

 

ScheduleBacked

  (1)实现与底层资源调度系统的交互(YARN,mesos等)

  (2)配合TaskScheduler实现具体任务执行所需的资源分配(核心接口receiveOffers)

 

 

 
 
 
详细过程

          技术分享

 

 

 

 

 

 

实例分析

  实例解析
val lines = ssc.textFile(args(1)) // 输入
val words = lines.flatMap(x =>x.split(" "))
words.cache() // 缓存
val wordCounts = words.map(x =>(x, 1) )
val red = wordCounts.reduceByKey( (a,b)=>{a + b} , 8)
red.saveAsTextFile(“/root/Desktop/out” , 8) // 行动

技术分享

 

 

    

 

Spark运行模式简介

  Spark运行模式列表

技术分享

 

Spark运行模式概述