精华内容
下载资源
问答
  • Spark Streaming动态资源分配

    千次阅读 2019-06-01 22:39:01
    同反压机制一样,Spark Streaming动态资源分配(即DRA,Dynamic Resource Allocation)也可以用来应对流处理中批次流量过载的场景。 Spark Streaming动态资源分配,允许为应用动态分配资源。当任务积压时,申请更多资源...

    同反压机制一样,Spark Streaming动态资源分配(即DRA,Dynamic Resource Allocation)也可以用来应对流处理中批次流量过载的场景。

    Spark Streaming动态资源分配,允许为应用动态分配资源。当任务积压时,申请更多资源;当任务空闲时,使用最少资源。

    在生产中,可将动态资源分配和背压机制一起使用,通过背压机制来细粒度确保系统稳定;通过动态资源分配机制来粗粒度根据应用负载,动态增减Executors。共同保证Spark Streaming流处理应用的稳定高效。

    动态资源分配的原理

    入口类是org.apache.spark.streaming.scheduler.ExecutorAllocationManagerExecutorAllocationManager中的定时器,每隔spark.streaming.dynamicAllocation.scalingInterval时间,调用一次manageAllocation方法来管理ExecutormanageAllocation方法计算规则如下:

    1. 必须完成至少一个Batch处理,即batchProcTimeCount > 0

    2. 计算Batch平均处理时间(Batch平均处理时间=Batch总处理时间/Batch总处理次数)。

    3. Batch平均处理时间大于阈值spark.streaming.dynamicAllocation.scalingUpRatio,则请求新的Executor。

    4. Batch平均处理时间小于阈值spark.streaming.dynamicAllocation.scalingDownRatio,则移除没有任务的Executor。

    动态资源分配重要参数

    1. spark.dynamicAllocation.enabled: 默认false,是否启用Spark批处理动态资源分配。

    2. spark.streaming.dynamicAllocation.enabled: 默认false,是否启用Spark Streaming流处理动态资源分配。

    3. spark.streaming.dynamicAllocation.scalingInterval: 默认60秒,多久检查一次。

    4. spark.streaming.dynamicAllocation.scalingUpRatio: 默认0.9,增加Executor的阈值。

    5. spark.streaming.dynamicAllocation.scalingDownRatio: 默认0.3,减少Executor的阈值。

    6. spark.streaming.dynamicAllocation.minExecutors: 默认无,最小Executor个数

    7. spark.streaming.dynamicAllocation.maxExecutors: 默认无,最大Executor个数。

    Spark Streaming动态资源分配注意事项

    1. Spark Streaming动态资源分配和Spark Core动态资源分配互斥

    Spark Core动态资源分配适合于批处理,如Spark Sql Cli,可以根据Task数量动态分配Executor数量;如Spark ThriftServer On Yarn,空闲时不占用资源,只有在用户提交Sql任务时才会根据Task数动态分配Executor数。

    当开启Spark Streaming动态资源分配时,需要关闭Spark Core动态资源分配。

    1. Spark Streaming动态资源分配起作用前,需要至少完成一个Batch处理

    由于Spark Streaming动态资源分配需要根据Batch总处理时间和Batch总处理次数来计算Batch平均处理时间,因此需要至少完成一个Batch处理。这就需要我们保证在Spark Streaming动态资源分配起作用前,应用程序不会崩溃。

    1. Spark Streaming动态资源分配应当和Spark Streaming背压机制同时使用

    启用动态资源分配

    
    sparkCommLib=/data/apps/sparkCommLib
    
    /usr/hdp/2.6.4.0-91/spark2/bin/spark-submit \
    --master yarn \
    --deploy-mode cluster \
    --queue default \
    --name spark_streaming_dra \
    --driver-cores 1 \
    --driver-memory 1G \
    --executor-memory 1G \
    --conf spark.dynamicAllocation.enabled=false \
    --conf spark.streaming.dynamicAllocation.enabled=true \
    --conf spark.streaming.dynamicAllocation.minExecutors=1 \
    --conf spark.streaming.dynamicAllocation.maxExecutors=15 \
    --jars ${sparkCommLib}/kafka_2.11-0.10.1.0.jar,${sparkCommLib}/kafka-clients-0.10.1.0.jar,${sparkCommLib}/spark-streaming-kafka-0-10_2.11-2.1.1.jar,${sparkCommLib}/fastjson-1.2.5.jar \
    --class com.bigData.spark.SparkStreamingDRA \
    spark-1.0-SNAPSHOT.jar
    

    在Yarn上可以看到,随着Spark Streaming任务队列中Queued的Batch越来越多,Executors数量在逐渐增加。

    展开全文
  • 基于动态资源分配的WDM-PON结构研究基于动态资源分配的WDM-PON结构研究,任丹萍,寿国础,文章简要分析了WDM-PON的系统结构,提出了逻辑组的概念,通过选择最佳的逻辑组数目来降低系统成本,提高系统资源利用率。...
  • 传统的互联网构架模型已难以满足...仿真结果表明,本文提出的基于混合博弈的虚拟网络动态资源分配方案相对于传统资源分配方案而言,充分利用了基础设施提供商提供的物理资源,同时有效预防链路拥塞,增加了用户满意度。
  • 高速铁路网中的时延感知动态资源分配
  • Spark动态资源分配

    千次阅读 2018-10-10 14:54:48
    cloudera manager默认是开启了spark动态资源分配的,即spark.dynamicAllocation,enable=true cloudera manager默认的动态配置参数似乎不是很合理,比如spark.dynamicAllocation.schedulerBacklogTimeout这个参数的...
    • cloudera manager默认是开启了spark动态资源分配的,即spark.dynamicAllocation,enable=true
    • cloudera manager默认的动态配置参数似乎不是很合理,比如spark.dynamicAllocation.schedulerBacklogTimeout这个参数的默认值是1秒,即当任务调度延迟超过1秒的时候,会请求增加executor,而且是指数级增加的请求,比如第一次请求1个(下一次检测周期是spark.dynamicAllocation.sustainedSchedulerBacklogTimeout参数来决定,默认是和spark.dynamicAllocation.schedulerBacklogTimeout一样),第二次会请求2个,第三次请求4个executor。
    • spark.dynamicAllocation.minExecutors(默认是0)和spark.dynamicAllocation.maxExecutors(默认是无限大)分别来控制动态资源分配的上下限。即申请最多不会超过maxExecutors,回收executors到minExecutors,可以通过spark.dynamicAllocation.initialExecutors来设置启动的时候初始化多少个executors,不设置的话,默认初始化spark.dynamicAllocation.minExecutors个executors。
    • 当某个executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout值时(默认60秒),会回收该executor占用的资源,销毁executor。
    • 针对实时程序如果也要动态分配资源的话,有些默认值需要根据实际情况调整一下,比如spark.dynamicAllocation.initialExecutors设置成2,如果每个executor一个vcore的话,至少启动两个executor,一个core给receive用,一个core用来执行计算任务。
    • 实时程序首个batch可能会有一些初始化的动作在里面,比如初始化了数据库连接池,初始化redis连接池等,可能处理时间会较长,如果按spark.dynamicAllocation.schedulerBacklogTimeout默认的1秒阈值的话,那么就会开始申请增加executors了,这样不是很合理,可以根据实际初始化时长适当将该参数调大一点,比如调成10秒。
    • 当指定了–num-executors,即明确指定了executor的个数,即使你设置了spark.dynamicAllocation.enable=true,动态资源分配也将无效。并在driver stderr的warn日志中看到如下警告:WARN spark.SparkContext: Dynamic Allocation and num executors both set, thus dynamic allocation disabled.
    展开全文
  • 3G系统动态资源分配下的QoS性能分析pdf,3G系统动态资源分配下的QoS性能分析
  • 1。本次调试查看源代码采用 spark学习-57-Spark下Scala版HBase下的根据权重获取最真实数据...只是修改了sparkSession的创建,代码如下,这里启动了采用standlone模式进行调试,否则无法进行动态资源分配 var _sparkSe

    1.美图

    在这里插入图片描述

    1. 本次调试查看源代码采用 spark学习-57-Spark下Scala版HBase下的根据权重获取最真实数据http://blog.csdn.net/qq_21383435/article/details/78772206里面的代码,略微修改了
      只是修改了sparkSession的创建,代码如下,这里启动了采用standlone模式进行调试,否则无法进行动态资源分配
     var  _sparkSession:SparkSession = SparkSession
          .builder()
          .appName("spark
    展开全文
  • 用于数字用户线中的节能传输的动态资源分配
  • 本文讲述了3G+LTE的动态资源分配机制。
  • 论文研究-云计算环境中SBS应用动态资源分配方法.pdf, 建立了一个SBS(基于服务的系统,service based system)应用端到端性能评价模型,并在该模型的基础上提出了SBS...
  • 为了解决用户选择协作集的协作多点传输(CoMP)系统中本地资源调度时的冲突问题,设计了一种冲突避免的动态资源分配方法.通过对协作资源的细分和随机指派,实现了协作节点间资源分配的解耦,简化了协商过程,有效避免...
  • 动态资源分配算法

    2013-07-11 17:44:37
    利用银行家算法进行资源分配的报告,包括程序和其他的一套说明都在我这里可以找到匹配的。
  • 基于分解和动态资源分配策略的多目标多因素优化算法
  • 全能制造系统动态资源分配及冲突消解,刘海英,田新诚,摘要:全能制造系统的协调机制包括动态资源分配和冲突消解两个部分。资源的动态分配和冲突的消解是全能系统制造领域中不同研究方
  • 论文研究-云计算环境下动态资源分配优化方法研究.pdf, 云计算理论中动态资源分配优化模型研究有待完善,本文提出处理动态资源分配优化问题的群智能处理模型.通过建立...
  • OFDMA系统中利用信道延时信息进行动态资源分配,吴燕嬿,杨绿溪,本文研究了在多用户正交频分复用系统(OFDMA)中通过有延时的信道信息进行的自适应子载波、功率分配。在OFDMA系统中的动态资源分配��
  • 针对双层网络模型中宏小区用户层和毫微微小区用户层存在共信道信号互相干扰的问题,提出了一种协作博弈的动态资源分配(CGDRA)方法.该方法首先根据宏小区用户的路径损耗和QoS需求,对宏小区用户层的发射功率进行分配,...
  • spark动态资源分配

    千次阅读 2017-05-25 14:09:40
    前段时间仓库间推广spark-sql时,生产环境已经应用了spark dynamic resource allocation特性,即可动态资源分配,这里的动态资源分配是指executor级的,我们知道spark的资源分配是比较coarse-grained的,一个...

    1.简介

    前段时间仓库间推广spark-sql时,生产环境已经应用了spark dynamic resource allocation特性,即可动态的资源分配,这里的动态和资源分配是指executor级的,我们知道spark的资源分配是比较coarse-grained的,一个spark作业不同stage之间task数量有时差异比较大,特别是最后stage的时候,有些作业数据稍微倾斜一下,那就有大量的executor是在空闲状态,造成集群资源的极大浪费,通过动态资源分配,已经空闲的executor,如果超过了timeout时间,即可回收资源,而不是继续占用资源;

    2.DRA配置安装

    可参照官网http://spark.apache.org/docs/1.6.3/job-scheduling.html#dynamic-resource-allocation

    1.首先找到spark版本的spark-<version>-yarn-shuffle.jar shuffle包,并将该包放到集群所有NodeManager的classpath下,比如放到HADOOP_HOME/share/hadoop/yarn/lib

    2.在所有节点的yarn-site.xml中NodeManager上运行的附属服务中加入spark_shuffle及对应的class类,如下:

            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle,spark_shuffle</value>
            </property>

            <property>
                   <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
                   <value>org.apache.spark.network.yarn.YarnShuffleService</value>
            </property>

    3.重启所有的Nodemanager

    即可配置安装好spark的动态资源的分配;

    3.spark作业配置

     spark动态资源分配默认是不开启的,并且只要设置了num-executors设置了作业的executor数,就不再有效;

     作业中设置,需要在conf中加入以下配置项:

     

    spark.dynamicAllocation.enabled false 是否要开启DRA功能,要开启则设置为true,设置为true需要将spark.shuffle.service.enabled
    设置为true;
    spark.dynamicAllocation.executorIdleTimeout 60s executor空闲多长时间就被移除释放
    spark.dynamicAllocation.cachedExecutorIdleTimeout infinity 这个要考虑cache数据的时候,有cache数据要空闲多长时间才能移除;默认无限,首先保证cache的数据后面操作需要的时候是不能移除的,这个要注意;
    spark.dynamicAllocation.initialExecutors spark.dynamicAllocation.minExecutors 初始化的executor数
    spark.dynamicAllocation.maxExecutors infinity 动态的时候最多executor数
    spark.dynamicAllocation.minExecutors 0 动态的时候最少executor数
    spark.dynamicAllocation.schedulerBacklogTimeout 1s 表示积压多久任务的时候要新申请executor
    spark.dynamicAllocation.sustainedSchedulerBacklogTimeout schedulerBacklogTimeout
    如:

    spark-submit \
    --master yarn \
    --deploy-mode cluster \
    --executor-cores 3 \
    --executor-memory 10G \
    --driver-memory 4G \

    --conf spark.dynamicAllocation.enabled=true \
    --conf spark.shuffle.service.enabled=true \

    --conf spark.dynamicAllocation.initialExecutors=5 \
    --conf spark.dynamicAllocation.maxExecutors=40 \
    --conf spark.dynamicAllocation.minExecutors=0 \
    --conf spark.dynamicAllocation.executorIdleTimeout=30s \
    --conf spark.dynamicAllocation.schedulerBacklogTimeout=10s \


    另外注意:

    资源动态控制,spark-core、spark-sql以及机器学习等task需要相对长时间且有差异的作业,Spark Streaming是按照批处理间隔数据流来处理的,对数据处理速率有要求,而不是粗粒度的资源的动态分配;


     



    展开全文
  • 此次课程设计的主要内容是实现算法模拟银行家算法,模拟实现动态资源分配,编写和调试一个系统动态资源的简单模拟银行家算法程序程序,观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。...
  • 粒子群优化技术在云计算环境中动态资源分配中的应用。 粒子群智能用于有效地将物理机资源分配给虚拟机请求。 “偏度因子”或“负载平衡因子”的概念用于测量每个物理机器中资源的不均匀性。 创建所有可能分配的...
  • 环境: cdh5.7.1 cdh5.7.1中的spark版本为spark1.6 关于如何配置动态资源分配,参见:...cloudera manager中的默认配置时开启了spark 动态资源分配的,也就是spark.
  • 这篇文章会详细介绍Spark 动态资源分配原理。 前言最近在使用Spark Streaming程序时,发现如下几个问题: 高峰和低峰Spark Streaming每个周期要处理的数据量相差三倍以上,预分配资源会导致低峰的时候资源的大量浪费...
  • Spark动态资源分配-Dynamic Resource Allocation  Spark  lxw1234@qq.com 2个月前 (12-31) 1429℃ 2评论 关键字:spark、资源分配、dynamic resource allocation Spark中,所谓资源单位一般指的是...
  • 主要研究了资源分配基数, 提出了一种新的基于选择消费代价网格资源分配算法。提出的方法首先采用模糊基数建立一个消费代价函数模型, 给出了网络中带权值的多参数消费代价函数。实例验证表明, 当用户需要从系统中获得...
  • Spark如何进行动态资源分配

    千次阅读 2020-10-16 06:50:00
    一、操作场景对于Spark应用来说,资源是影响Spark应用执行效率的一个重要因素。当一个长期运行的服务,若分配给它多个Executor,可是却没有任何任务分配给它,而此时有其他的应用却...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 355,713
精华内容 142,285
关键字:

动态资源分配