搭建邮箱系统的意义与方法解析,提升效率与安全性
521
2022-05-30
Spark编程模型回顾
Spark编程模型几大要素
● Driver Program
● 输入-Transformation-Action
● 缓存
● 共享变量
RDD的五大特征
● 分区--- partitions
● 依赖--- dependencies()
● 计算函数--- computer(p,context)
● 分区策略(Pair RDD)-- partitioner()
● 本地性策略--- preferredLocations(p)
Spark基本运行流程
Application program的组成
● Job : 包含多个Task 组成的并行计算,跟Spark action对应。
● Stage : Job 的调度单位,对应于TaskSet 。
● TaskSet :一组关联的、相互之间没有shuffle 依赖关系的任务组成的任务集。
● Task : 被送到某个executor 上的工作单元
运行流程概述:
具体流程(以standalone模式为例):
任务调度:
DAGScheduler
● 构建Stage—碰到shuffle就split
● 记录哪个RDD 或者Stage 输出被物化
● 重新提交shuffle 输出丢失的stage
● 将Taskset 传给底层调度器
● 本地性策略--- preferredLocations(p)
1.spark-cluster TaskScheduler
2.yarn-cluster YarnClusterScheduler
3.yarn-client YarnClientClusterScheduler
TaskScheduler
● 为每一个TaskSet 构建一个TaskSetManager 实例管理这个TaskSet 的生命周期
● 数据本地性决定每个Task 最佳位置(process-local, node-local, rack-local and then and any
● 提交taskset( 一组task) 到集群运行并监控
● 推测执行,碰到straggle 任务放到别的节点上重试
● 出现shuffle 输出lost 要报告fetch failed 错误
ScheduleBacked
● 实现与底层资源调度系统的交互(YARN,mesos等)
● 配合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
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。