您的位置:首页 > 其它

Spark任务调度

2017-06-04 18:25 309 查看
  不多说,直接上干货!

[b]Spark任务调度[/b]

          


[b]DAGScheduler[/b]

  构建Stage—碰到shuffle就split

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

  重新提交shuffle 输出丢失的stage

  将Taskset 传给底层调度器

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

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


[b]TaskScheduler[/b]

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

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

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

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

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

[b]ScheduleBacked[/b]

  实现与底层资源调度系统的交互(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) // 行动




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: