美文网首页
Spark Job调度

Spark Job调度

作者: frmark | 来源:发表于2017-06-08 21:34 被阅读0次

    概况

    spark提供了一些方案来调度资源。首先,每个spark程序都在跑在若干个独立的executor集群上的(其中executor是一个jvm来run task和store data),集群管理提供了集群层面的资源分配。其次,对于每一个spark程序来说,多个由不同进程提交的job(actions)可以并行的执行。这种情况很常见,sparkContext提供了一种公平调度的机制。

    spark程序间的调度

    不同的用户使用同一个集群,并使用不同的配置。最初需要解决的就是资源的分割。目前常见的分配原则有下列三种,其中yarn最常用。

    • standalone 默认情况下spark程序是FIFO的形式被提交的,并占用所有可用资源。可以通过设置spark.cores.max控制占用core的数量,并通过spark.executor.memory控制每个executor使用的内存。
    • yarn 主要通过 --num-executors或spark.executor.instances、--executor-memory或spark.executor.memory、--executor-cores或spark.executor.cores来控制。
      目前不同的spark 程序之间不可以共享数据。但是可以通过获取和释放共享资源,比如动态资源分配
    spark程序内的调度

    由不同线程提交的并行的job可以被同时执行,spark内部的调度是线程安全的。
    一般来说,spark的调度是FIFO的,每个job还可以分成stages。如果第一个job中的stage有task运行,之后的job就需要等待。
    从spark0.8开始,可以配置公平调度器,spark 分配tasks是以一种轮询的方式,短的job可以提前被执行完。可以在sparkContext中设置
    spark.scheduler.mode=FAIR

    公平调度

    公平调度提供了一种方式将jobs一起放到某个资源池中,可以给某些重要的jobs提供高优先级的资源。可以保证需要重要jobs可以提前完成。
    一般情况下,jobs被提交到了default pool中,不过可以在代码中随时控制当前线程的job在哪个pool中执行,比如sc.setLocalProperty("spark.scheduler.pool","pool"),也可以取消使用当前的pool,sc.setLocalProperty("spark.scheduler.pool", null)
    以上的使用都需要配置pool的配置文件。具体有三个参数,参数的含义如下:

    • schedulingMode: 可以使FIFO和FAIR,控制pool中job的执行模式。
    • weight: 控制和其他pool对集群资源的占用权重,默认为1,如果设置为2,这个pool就会获取2倍的资源。不仅如此,还可以控制jobs的执行时间,同时如果设置为1000,此pool总是启动tasks无论什么时候jobs active。
    • minShare 最基本的资源分配。先满足此值,然后再分配weight
      可以通过设置conf.set("spark.scheduler.allocation.file", "/path/to/file")使用自己配置的文件。格式如下:
    <?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>
    

    如果在代码中使用sc.setLocalProperty("spark.scheduler.pool", "pool1"),并且不配置上述文件,每个分配池基本都是使用FIFO,weight=1,minshare=0.

    相关文章

      网友评论

          本文标题:Spark Job调度

          本文链接:https://www.haomeiwen.com/subject/wmmtqxtx.html