Spark 1.X 大数据平台V2(第二周作业)

1 . 请说明application与job之间的关系?

    一个Application和一个SparkContext相关联,每个Application中可以有一个或多个Job,可以并行或者串行运行Job。
    Spark中的一个Action可以触发一个Job的运行。在Job里面又包含了多个Stage,Stage是以Shuffle进行划分的。在Stage中又包含了多个Task,多个Task构成了Task Set。
    帮助参考:http://www.iteblog.com/archives/1183

2 . 在什么情况下会出现新的Stage?

    newStage操作对应会生成新的result stage或者shuffle stage:内部有一个isShuffleMap变量来标识该stage是shuffle or result
Spark对stage的划分是按照宽依赖来进行区分的:根据RDD的依赖关系,如果遇到宽依赖则创建ShuffleStage;
(Stage的划分是以ShuffleDependency为依据的,也就是说当某个RDD的运算需要将数据进行Shuffle时,这个包含了Shuffle依赖关系的RDD将被用来作为输入信息,构建一个新的Stage,由此为依据划分Stage,可以确保有依赖关系的数据能够按照正确的顺序得到处理和运算。)
帮助参考:http://www.cnblogs.com/luogankun/p/3826245.html

3 . 简述DAGScheduler的作用?

    在Spark中作业调度的相关类最重要的就是DAGScheduler,DAGScheduler顾名思义就是基于DAG图的Scheduler
    TaskScheduler负责实际每个具体任务的物理调度,DAGScheduler负责将作业拆分成不同阶段的具有依赖关系的多批任务,可以理解为DAGScheduler负责任务的逻辑调度。
    1、接收用户提交的job;
    2、将job根据类型划分为不同的stage,记录哪些RDD、Stage被物化,并在每一个stage内产生一系列的task,并封装成TaskSet;
         DAGScheduler内部维护了各种 task / stage / job之间的映射关系表。
    3、决定每个Task的最佳位置(任务在数据所在的节点上运行),并结合当前的缓存情况;将TaskSet提交给TaskScheduler;
    4、重新提交Shuffle输出丢失的Stage给TaskScheduler;
  注:一个Stage内部的错误不是由shuffle输出丢失造成的,DAGScheduler是不管的,由TaskScheduler负责尝试重新提交task执行;
    5、DAGScheduler最重要的任务之一就是计算作业和任务的依赖关系,制定调度逻辑
帮助参考:http://www.cnblogs.com/luogankun/p/3826245.html
帮助参考:http://blog.csdn.net/colorant/article/details/24010035
基本概念
Task任务 :单个分区数据集上的最小处理流程单元
TaskSet任务集:一组关联的,但是互相之间没有Shuffle依赖关系的任务所组成的任务集
Stage调度阶段:一个任务集所对应的调度阶段
Job作业:一次RDD Action生成的一个或多个Stage所组成的一次计算作业

4 . 简述TaskScheduler的作用?

    SparkContext创建过程中会调用createTaskScheduler函数来启动TaskScheduler任务调度器,TaskScheduler会根据部署方式而选择不同的SchedulerBackend来处理,
TaskScheduler类负责任务调度资源的分配,SchedulerBackend负责与Master、Worker通信收集Worker上分配给该应用使用的资源情况。
TaskScheduler是在Application执行过程中,为它进行任务调度的,是属于Driver侧的。对应于一个Application就会
有一个TaskScheduler,TaskScheduler和Application是一一对应的。TaskScheduler对资源的控制也比较鲁棒(所以会取名CoarseGrainedSchedulerBackend),一个Application申请Worker的计算资源,只要Application不结束就会一直被占有。
帮助参考:http://www.aboutyun.com/thread-9392-1-1.html

5 . reduce任务过多或者过少各自会有什么问题?

    数量太大,造成很多小任务,增加启动任务的开销;数目太少,任务运行缓慢。
需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism(控制Spark中的分布式shuffle过程默认使用的task数量,默认为8个)。通常,reduce数目设置为core数目的23倍。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸依天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值