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

探讨Spark Standalone集群默认的FIFO调度策略及其对多作业执行的影响,介绍如何通过调整spark.cores.max参数实现多作业并行运行,包括三种配置方法:SparkConf、spark-submit与spark-env.sh。

目录

  • 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"

### Standalone模式 Standalone模式Spark自带的资源调度系统,支持完全分布式。在这种模式下,Spark有自己的Master和Worker节点,负责资源调度和管理。它分为Client模式和Cluster模式,Client模式下Driver运行在Master节点上,而Cluster模式下Driver运行在Worker节点上。不过,该模式典型的Master/slave模式,Master可能存在单点故障问题 [^1][^2]。 ### Standalone HA模式 Standalone HA模式是为了解决Standalone模式中Master单点故障(SPOF)问题而出现的。Spark提供了两种方案来实现高可用:基于文件系统的单点恢复,只能用于开发或测试环境;基于Zookeeper的Standby Masters,可以用于生产环境。ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息,包括Worker、Driver和Application的信息都已经持久化到文件系统,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何的影响 [^4]。 ### YARN模式 YARN模式运行在YARN资源管理器框架之上,由YARN负责资源管理,Spark负责任务调度和计算 [^2]。 ### 对比 - **资源管理**:Standalone模式Spark自己的Master和Worker节点负责资源调度和管理;Standalone HA模式Standalone基础上解决了Master单点故障问题,但资源管理本质上还是Spark自身;而YARN模式则由YARN负责资源管理,Spark专注于任务调度和计算 [^1][^2][^4]。 - **高可用性**:Standalone模式存在Master单点故障问题;Standalone HA模式通过特定机制实现了Master的高可用,能避免单点故障对集群的严重影响;YARN本身具备一定的高可用特性,能较好地保障资源管理的稳定性 [^2][^4]。 - **适用场景**:Standalone模式适合对Spark自身调度机制熟悉且对高可用性要求不高的场景;Standalone HA模式适用于生产环境,需要保障集群稳定运行;YARN模式适合已经搭建了Hadoop YARN环境的企业,可充分利用已有资源管理框架 [^2][^4]。 ```python # 以YARN模式提交Spark任务示例 # 以下代码为命令行形式 # bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 256m --num-executors 3 --total-executor-cores 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值