首页 > 代码库 > 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运行模式概述
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。