天天看点

Spark 之 standalone 模式多个application(作业)资源调度

目录

  • 1、默认情况
  • 2、修改配置

1、默认情况

       standalone集群对于同时提交上来的多个作业,仅仅支持FIFO调度策略,也就是先入先出;默认情况下,集群对多个作业同时执行的支持是不好的,没有办法同时执行多个作业;因为先提交上来的每一个作业都会尝试使用集群中所有可用的cpu资源,此时相当于就是只能支持作业串行起来,一个一个运行了。

2、修改配置

      我们希望能够支持多作业同时运行,那么就需要调整一下资源参数,我们可以设置spark.cores.max参数,来限制每个作业能够使用的最大的cpu core数量,这样先提交上来的作业不会使用所有的cpu资源,后面提交上来的作业就可以获取到资源,也可以同时并行运行了。可以通过设置全局的一个参数,让每个作业最多只能获取到一部分cpu core资源,那么后面提交上来的作业,就也可以获取到一部分资源,standalone集群才可以支持同时执行多个作业。

方式一:

使用SparkConf或spark-submit中的--conf标识,设置参数即可;

SparkConf conf = new SparkConf()

        .set("spark.cores.max", "10")

通常不建议使用SparkConf,硬编码,来设置一些属性,不够灵活。

方式二:

建议使用spark-submit来设置属性

--conf spark.cores.max=10

方式三:

通过spark-env.sh配置每个application默认能使用的最大cpu数量来进行限制,默认是无限大,此时就不需要每个application都自己手动设置了,在spark-env.sh中配置spark.deploy.defaultCores即可。

比如说: export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=10"

继续阅读