spark作业调度

一、Application内调度
调度相关基本概念:
Task(任务) :单个分区数据集上的最小处理流程单元
TaskSet(任务集):一组关联的,但是互相之间没有Shuffle依赖关系的任务所组成的任务集
Stage(调度阶段):一个任务集所对应的调度阶段
Job(作业):由一个RDD Action生成的一个或多个调度阶段所组成的一次计算作业
Application(应用程序):Spark应用程序,由一个或多个作业组成


作业调度相关类:
DAGScheduler,基于DAG图的调度类,计算作业和任务的依赖关系,将作业拆分拆分成不同阶段的具有依赖关系的多批任务,制定调度逻辑,可以理解为DAGScheduler负责任务的逻辑调度, DAGScheduler在SparkContext初始化的过程中被实例化,一个SparkContext对应创建一个DAGScheduler,TaskScheduler负责每个具体任务的实际物理调度,通过构建一个TaskSetManager的实例来管理任务集的生命周期,TaskScheduler得到计算资源后,通过TaskSetManager调度具体的任务到相应的Executor节点上进行计算


调度阶段的拆分:
调度阶段的划分是以ShuffleDependency为依据的,也就是说当某个RDD的运算需要将数据进行shuffle操作时,这个包含了shuffle依赖关系的RDD将被用来作为输入信息,构建一个新的调度阶段。以此为依据划分调度阶段,可以确保有依赖关系的数据能够按照正确的顺序得到处理和运算


状态的监控、任务结果获取
DAGScheduler通过对TaskScheduler暴露一系列的回调函数来监控当前作业调度阶段和任务的完成情况,一个具体的任务在Executor中执行完毕后其结果返回给DAGScheduler


调度模式:
默认Spark采用FIFO调度模式,也可以使用公平调度模式,这样在有长期运行的任务的集群上,后面
提交的小的任务也有机会获取资源并运行,
最简单的方式是通过设置spark.scheduler.mode属性值为FAIR来开启公平调度模式: 
val conf = new SparkConf().setMaster(...).setAppName(...)
conf.set("spark.scheduler.mode", "FAIR")
val sc = new SparkContext(conf)


Fair调度池:
公平调度支持把jobs分组到设置了不同调度选项的调度池里,可以通过为重要的jobs创建高优先级的池
如果不做设置,新提交的jobs进入默认的池,通过设置spark.scheduler.pool提交任务到指定的池,
sc.setLocalProperty("spark.scheduler.pool", "pool1")


调度池配置文件样列:
<?xml version="1.0"?>
<allocations>
  <pool name="production">
    <schedulingMode>FAIR</schedulingMode>
    <weight>1</weight>
    <minShare>2</minShare>
  </pool>
  <pool name="test">
    <schedulingMode>FIFO</schedulingMode>
    <weight>2</weight>
    <minShare>3</minShare>
  </pool>
</allocations>


二、Application间调度
基于集群类型,资源分配有以下配置:
Standalone mode: 默认是使用FIFO的模式,我们可以使用 spark.cores.max  来设置它的最大核心数,使用 spark.executor.memory 来设置它的内存
Yarn:在YARN模式下,使用 --num-workers设置worker的数量,使用 --worker-memory设置work的内存,使用 --worker-cores设置worker的核心数
Mesos:设置spark.mesos.coarse属性为true来使用在Mesos上使用静态分区,同样也可以使用--spark.executor.memory设置work的内存



以上主要是<<spark大数据处理技术>>读书笔记与出自:
http://spark.apache.org/docs/1.6.1/job-scheduling.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值