Spark运行模式概述

举报
Smy1121 发表于 2019/06/22 15:11:36 2019/06/22
【摘要】 Spark编程模型几大要素

Spark编程模型回顾

Spark编程模型几大要素

image.png


● Driver Program

● 输入-Transformation-Action

● 缓存

● 共享变量


RDD的五大特征

image.png

● 分区--- partitions

● 依赖--- dependencies()

● 计算函数--- computer(p,context)

● 分区策略(Pair RDD)-- partitioner()

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

   

Spark基本运行流程

Application program的组成

image.png

● Job : 包含多个Task 组成的并行计算,跟Spark action对应。

● Stage : Job 的调度单位,对应于TaskSet 。

● TaskSet :一组关联的、相互之间没有shuffle 依赖关系的任务组成的任务集。

● Task : 被送到某个executor 上的工作单元


运行流程概述:

image.png


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

image.png


任务调度:

image.png


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)


详细过程:

image.png


实例分析

实例解析

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运行模式列表

image.png

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。