`
jgsj
  • 浏览: 990822 次
文章分类
社区版块
存档分类
最新评论

Spark-0.8新增Fair Scheduler资源调度

 
阅读更多

不同应用之间的资源调度

standalone集群 默认是simple FIFO scheduler,也就是说允许接入的应用使用全量的cpu和mem。如果想要在多用户下限制,需要设置参数来控制每个应用占有的资源数,比如System.setProperty("spark.cores.max","10"),System.setProperty("spark.executor.memory","10g")

在standalone模式,yarn模式,和粗粒度的mesos模式下,都是使用static partition的方式,设定每个应用占用的cpu和mem数

mesos还有一种模式(默认细粒度的模式)是dynamic sharing CPU cores,但是mem还是固定独立分配的。这种模式可能会带来不可预估的延迟,因为每个node要取回自己的core来work的时候,需要等待释放。

以上模式里都不包含可以共享mem的方式。如果要共享内存里的数据的话,一方面可以用shark的jdbc接口,处理sql的时候同时共享某些RDD;另一方面,在未来的发布版本里,Tachyon会提供另一种方式共享RDDs。


同一个应用下的资源调度

在同一个SparkContext里,jobs是可以并行跑的,spark的调度器是线程安全的。

但是默认的调度器处理jobs是FIFO的。每个job有若干个stages(map和reduce的阶段),如果前面的stage把mem和cpu占满了,那后续来的job里的stage可能就卡住不能跑了。所以spark-0.8里出了fair scheduler这个新的调度模式,对jobs的tasks采用轮询的方式,短的任务在长任务跑的情况下也可以得到资源并行进行,适合多用户使用的情况

Fair Scheduler提供pool的概念,pool可以设置weight。比如在一个线程上设置(启动一个SparkContext前)

context.setLocalProperty("spark.scheduler.pool", "pool1")

指定了一个叫pool1的pool,之后该线程下进行的jobs就都属于这个pool了。且默认的pool平均分享cpu和mem总量(weight默认是1,可以调),每个pool内的job按FIFO模式(pool内job之间是FIFO或Fair是可以设置的)。这样的话,比如5个user每人一个默认的pool,那么大家享有的资源量是一样的,各自执行的任务还是会按先后顺序执行。pool除了可以设置weight和改变内部mode外,还可以设置minShare,指这个pool可以额外分享几个cpu cores,默认是0。Fair Scheduler每次都会尝试去满足active pools的minshare量。

以上每个pool的参数和pool名字(种类)可以在一个xml里声明,然后在启动Context的时候使用:

System.setProperty("spark.scheduler.allocation.file", "/path/to/file")

下图为源码里和这部分相关的类图:



(全文完)

分享到:
评论

相关推荐

    hadoop-0.21.0-fairscheduler.jar

    hadoop-0.21.0-fairscheduler.jar

    spark-2.4.4-bin-hadoop2.6.tgz

    Spark使用FIFO和Fair Scheduler,根据作业优先级和资源需求进行任务调度。 9. **安全性**: Spark 2.4.4增加了对Kerberos等安全协议的支持,增强了集群的安全性。 10. **监控和调优**: Spark提供了Web UI来...

    apache-dolphinscheduler-1.3.2-dolphinscheduler-bin.tar.gz

    这个压缩包“apache-dolphinscheduler-1.3.2-dolphinscheduler-bin.tar.gz”是DolphinScheduler的1.3.2版本的二进制发行版,包含了运行和配置DolphinScheduler所需的所有基本文件。 **1. DolphinScheduler的核心...

    3-3.新一代大数据调度+-Apache+DolphinScheduler架构演进+&+Roadmap.pdf

    Apache DolphinScheduler 是一个分布式、易扩展并带有强大的可视化界面的大数据工作流调度系统。自 2021 年 03 月 18 日正式成为 Apache 顶级项目以来,DolphinScheduler 致力于在数据工作流编排中“解决复杂的...

    spark-2.4.0-bin-without-hadoop.tgz

    最后,Spark 的调度系统(Scheduler)在 2.4.0 版本中也有所优化,它能更有效地分配资源,提高整体的运行效率。YARN 和 Mesos 等资源管理器与 Spark 的集成也得到了增强。 总的来说,Spark 2.4.0 是一个功能强大且...

    solr-dataimport-scheduler.jar 可使用于solr7.x版本

    Solr 数据导入调度器(solr-dataimport-scheduler.jar)是一个专门为Apache Solr 7.x版本设计的组件,用于实现数据的定期索引更新。在理解这个知识点之前,我们需要先了解Solr的基本概念以及数据导入处理...

    apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz

    在“apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz”这个压缩包中,包含了DS分布式工作流的后台服务组件,这个稳定版本为1.2.0,是DolphinScheduler在Apache孵化器项目中的一个...

    apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz

    标题中的"apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz"表示的是DS的1.2.0稳定版本的前端(front)部分的源码包,它被打包成tar.gz格式,这是一种常见的Linux系统下的压缩文件格式...

    spark-2.4.0源码

    9. **YARN和Mesos集成**:Spark可以运行在Hadoop的YARN或Apache Mesos之上,以管理和调度资源。 10. **Spark UI和事件日志**:Spark提供了Web UI来监控作业状态,源码中可以看到如何实现这些可视化工具,同时Spark...

    solr-dataimport-scheduler.jar

    经过测试可以适用solr7.4版本。如果低版本solr(6.*) 可以直接适用网上的solr-dataimport-scheduler 1.1 或者1.0版本。

    MapReduce:Fair Scheduler PPT分享

    在这个主题中,我们将深入探讨“Fair Scheduler”,这是一个在Hadoop MapReduce中用于资源调度的策略,其目标是实现集群资源的公平分配,提高系统整体效率。 Fair Scheduler的PPT分享将帮助我们理解它的设计理念和...

    apache-dolphinscheduler-3.1.4-bin.tar.gz

    apache-dolphinscheduler-3.1.4-bin.tar.gzapache-dolphinscheduler-3.1.4-bin.tar.gzapache-dolphinscheduler-3.1.4-bin.tar.gzapache-dolphinscheduler-3.1.4-bin.tar.gzapache-dolphinscheduler-3.1.4-bin.tar....

    solr-data-import-scheduler-1.1.2

    solr-data-import-scheduler-1.1.2,用于solr定时更新索引的jar包,下载后引入到solr本身的dist下面,或者你tomcat项目下面的lib下面

    A-Deeper-Understanding-of-Spark-Internals-Aaron-Davidson

    - **任务调度器(Task Scheduler)**:负责将DAG中的任务分配到集群中的各个节点上执行。 ##### 3. Shuffle操作 Shuffle操作在Spark中是指数据重新分布的过程,尤其是在执行如`groupByKey`、`reduceByKey`等操作时...

    支持solr6.1-solr-dataimport-scheduler-1.2.jar

    在 Solr 的生态系统中,`solr-dataimport-scheduler-1.2.jar` 是一个非常重要的组件,它允许用户定时执行数据导入任务,这对于需要定期更新索引的应用场景尤其有用。这个特定的版本 `1.2` 已经被优化以兼容 `Solr ...

    solr-dataimport-scheduler

    Solr 数据导入调度器(solr-dataimport-scheduler)是一个实用工具,用于自动化Apache Solr中的数据导入过程,尤其适用于需要定期从关系型数据库同步数据的场景。Solr 是一个流行的开源全文搜索引擎,它提供了强大的...

    apache-dolphinscheduler-3.1.4-src.tar.gz

    apache-dolphinscheduler-3.1.4-src.tar.gzapache-dolphinscheduler-3.1.4-src.tar.gzapache-dolphinscheduler-3.1.4-src.tar.gzapache-dolphinscheduler-3.1.4-src.tar.gzapache-dolphinscheduler-3.1.4-src.tar....

    48-掌握 cinder-scheduler 调度逻辑1

    自定义 Scheduler Filters 和 Weighers如果默认的 Filter 和 Weigher 不满足特定需求,可以通过扩展 Cinder 的调度器功能来自定义。开发者可以编写新的 Filter 或 Weigher 类,并在配置文件中添加相应的类名,以覆盖...

Global site tag (gtag.js) - Google Analytics